Java tutorial
/********************************************************************** * Copyright (C) 2014 NTT DATA Corporation * This program is free software; you can redistribute it and/or * Modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, version 2. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. *********************************************************************/ package com.clustercontrol.jobmanagement.view; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.commands.ICommandService; import com.clustercontrol.util.WidgetTestUtil; import com.clustercontrol.accesscontrol.util.ObjectBean; import com.clustercontrol.bean.HinemosModuleConstant; import com.clustercontrol.jobmanagement.bean.JobConstant; import com.clustercontrol.jobmanagement.composite.JobListComposite; import com.clustercontrol.jobmanagement.composite.JobTreeComposite; import com.clustercontrol.jobmanagement.composite.action.JobListSelectionChangedListener; import com.clustercontrol.jobmanagement.composite.action.JobTreeSelectionChangedListener; import com.clustercontrol.jobmanagement.util.JobEditStateUtil; import com.clustercontrol.jobmanagement.util.JobTreeItemUtil; import com.clustercontrol.jobmanagement.view.action.CreateApprovalJobAction; import com.clustercontrol.jobmanagement.view.action.CreateFileJobAction; import com.clustercontrol.jobmanagement.view.action.CreateJobAction; import com.clustercontrol.jobmanagement.view.action.CreateJobNetAction; import com.clustercontrol.jobmanagement.view.action.CreateJobUnitAction; import com.clustercontrol.jobmanagement.view.action.CreateMonitorJobAction; import com.clustercontrol.jobmanagement.view.action.CreateReferJobAction; import com.clustercontrol.jobmanagement.view.action.DeleteJobAction; import com.clustercontrol.jobmanagement.view.action.EditModeAction; import com.clustercontrol.jobmanagement.view.action.JobObjectPrivilegeAction; import com.clustercontrol.jobmanagement.view.action.ModifyJobAction; import com.clustercontrol.jobmanagement.view.action.RunJobAction; import com.clustercontrol.view.CommonViewPart; import com.clustercontrol.view.ObjectPrivilegeTargetListView; import com.clustercontrol.ws.jobmanagement.JobTreeItem; /** * []<BR> * * @version 5.0.0 * @since 1.0.0 */ public class JobListView extends CommonViewPart implements ObjectPrivilegeTargetListView { // private static Log m_log = LogFactory.getLog(JobListView.class); /** ID */ public static final String ID = JobListView.class.getName(); /** */ private SashForm m_sash = null; /** ? */ private JobTreeComposite m_jobTree = null; /** []?? */ private JobListComposite m_jobList = null; /** */ private JobTreeItem m_copyJobTreeItem = null; /** Last focus composite */ private Composite lastFocusComposite = null; /** * Number of selected items */ private int selectedNum; private int dataType; private boolean editEnable; /** * */ public JobListView() { super(); } protected String getViewName() { return this.getClass().getName(); } /** * ??? * * @param parent ? * * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) * @see #createContextMenu() * @see #update() */ @Override public void createPartControl(Composite parent) { super.createPartControl(parent); GridLayout layout = new GridLayout(1, true); parent.setLayout(layout); layout.marginHeight = 0; layout.marginWidth = 0; m_sash = new SashForm(parent, SWT.HORIZONTAL); WidgetTestUtil.setTestId(this, "sashform", m_sash); GridData gridData = new GridData(); gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; m_sash.setLayoutData(gridData); Long start = System.currentTimeMillis(); //? m_jobTree = new JobTreeComposite(m_sash, SWT.NONE, null); WidgetTestUtil.setTestId(this, "jobtree", m_jobTree); //? m_jobList = new JobListComposite(m_sash, SWT.NONE); WidgetTestUtil.setTestId(this, "joblist", m_jobList); //Sash? 30% ?70% m_sash.setWeights(new int[] { 30, 70 }); m_jobTree.getTreeViewer().addSelectionChangedListener(new JobTreeSelectionChangedListener()); m_jobList.getTableViewer().addSelectionChangedListener(new JobListSelectionChangedListener(m_jobList)); //?? createContextMenu(); // Initialize dataType JobTreeItem select = getSelectJobTreeItemList().get(0); dataType = select == null ? JobConstant.TYPE_COMPOSITE : select.getData().getType(); Long end = System.currentTimeMillis(); m_log.info("init() : " + (end - start) + "ms"); m_jobTree.addToTreeViewerList(); } /** * ???? * * @see org.eclipse.jface.action.MenuManager * @see org.eclipse.swt.widgets.Menu */ private void createContextMenu() { MenuManager menuManager = new MenuManager(); menuManager.setRemoveAllWhenShown(true); Menu treeMenu = menuManager.createContextMenu(m_jobTree.getTree()); WidgetTestUtil.setTestId(this, null, treeMenu); m_jobTree.getTree().setMenu(treeMenu); menuManager.addMenuListener(new IMenuListener() { @Override public void menuAboutToShow(IMenuManager manager) { StructuredSelection selection = (StructuredSelection) m_jobTree.getTreeViewer().getSelection(); if (selection != null) { // Do the same as JobTreeSelectionChangedListenser Object selectObject = selection.getFirstElement(); List<?> list = selection.toList(); List<JobTreeItem> itemList = new ArrayList<JobTreeItem>(); for (Object obj : list) { if (obj instanceof JobTreeItem) { itemList.add((JobTreeItem) obj); } } // Set last focus JobTreeComposite composite = getJobTreeComposite(); if (composite != null && composite.getTree().isFocusControl()) { setLastFocusComposite(composite); } setEnabledAction(selectObject, itemList, true); } } }); getSite().registerContextMenu(menuManager, this.m_jobTree.getTreeViewer()); menuManager = new MenuManager(); menuManager.setRemoveAllWhenShown(true); Menu listMenu = menuManager.createContextMenu(m_jobList.getTable()); WidgetTestUtil.setTestId(this, null, listMenu); m_jobList.getTable().setMenu(listMenu); getSite().registerContextMenu(menuManager, this.m_jobList.getTableViewer()); } /** * ??? * @return */ public int getDataType() { return this.dataType; } /** * ???(Hinemos???????) * * @see com.clustercontrol.jobmanagement.composite.JobTreeComposite#update() * @see com.clustercontrol.jobmanagement.composite.JobTreeComposite#getSelectItemList() * @see com.clustercontrol.jobmanagement.composite.JobListComposite#update(JobTreeItem) */ @Override public void update() { Long start = System.currentTimeMillis(); JobEditStateUtil.releaseAll(); m_jobTree.update(); List<JobTreeItem> itemList = this.getJobTreeComposite().getSelectItemList(); for (JobTreeItem item : itemList) { m_jobList.update(item); } Long end = System.currentTimeMillis(); m_log.info("update () : " + (end - start) + "ms"); } /** * ??ID???(Hinemos??????????) * @param jobId */ public void setFocus(String managerName, String jobunitId, String jobId) { m_jobTree.setFocus(managerName, jobunitId, jobId); } /** * Get the number of selected items * @return */ public int getSelectedNum() { return this.selectedNum; } public boolean getEditEnable() { return this.editEnable; } /** * ??/??? * * @param type * @param selection ????? * * @see com.clustercontrol.bean.JobConstant */ public void setEnabledAction(Object selectObject, List<JobTreeItem> itemList, boolean updateList) { if (selectObject instanceof JobTreeItem) { JobTreeItem selectJobTreeItem = (JobTreeItem) selectObject; // ? getJobListComposite().setSelectJobTreeItemList(itemList); int type = selectJobTreeItem.getData().getType(); String jobunitId = selectJobTreeItem.getData().getJobunitId(); // ?????????? if (type == JobConstant.TYPE_JOBUNIT) { setEnabledActionAll(true); } // ??? if (updateList) { getJobListComposite().update(selectJobTreeItem); } // ??/ setEnabledAction(type, jobunitId); } else { // if (updateList) { getJobListComposite().update(null); } //??? setEnabledAction(-9, ""); } } private void setEnabledAction(int type, String jobunitId) { this.dataType = type; //??/?? ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class); if (null != service) { List<JobTreeItem> tree = getSelectJobTreeItemList(); boolean isEditable = true; for (JobTreeItem item : tree) { if (item == null) { isEditable = false; break; } String managerName = JobTreeItemUtil.getManagerName(item); if (null != managerName) { isEditable = isEditable && JobEditStateUtil.getJobEditState(managerName) .isLockedJobunitId(item.getData().getJobunitId()); } else { isEditable = false; break; } } editEnable = isEditable; service.refreshElements(CreateJobUnitAction.ID, null); service.refreshElements(CreateJobNetAction.ID, null); service.refreshElements(CreateJobAction.ID, null); service.refreshElements(CreateFileJobAction.ID, null); service.refreshElements(CreateReferJobAction.ID, null); service.refreshElements(CreateApprovalJobAction.ID, null); service.refreshElements(CreateMonitorJobAction.ID, null); service.refreshElements(DeleteJobAction.ID, null); service.refreshElements(ModifyJobAction.ID, null); service.refreshElements(JobObjectPrivilegeAction.ID, null); service.refreshElements(RunJobAction.ID, null); service.refreshElements(EditModeAction.ID, null); // Update ToolBar after elements refreshed // WARN : Both ToolBarManager must be updated after updateActionBars(), otherwise icon won't change. getViewSite().getActionBars().updateActionBars(); getViewSite().getActionBars().getToolBarManager().update(false); } } /** * ????? * * @return ?? */ public JobTreeComposite getJobTreeComposite() { return m_jobTree; } /** * []????? * * @return []?? */ public JobListComposite getJobListComposite() { return m_jobList; } /** * ??? */ public void show() { m_sash.setMaximizedControl(null); } /** * ????? */ public void hide() { m_sash.setMaximizedControl(m_jobList); } /** * Set last focus composite(Tree/List) * @param composite */ public void setLastFocusComposite(Composite composite) { if (!composite.equals(this.lastFocusComposite)) { this.lastFocusComposite = composite; } } /** * ??????? * @return composite */ public Composite getLastFocusComposite() { return this.lastFocusComposite; } /** * ???? * * @return JobTreeItem ??? */ public List<JobTreeItem> getSelectJobTreeItemList() { List<JobTreeItem> items = new ArrayList<JobTreeItem>(); if (this.lastFocusComposite instanceof JobTreeComposite) { items = m_jobTree.getSelectItemList(); } else if (this.lastFocusComposite instanceof JobListComposite) { items = m_jobList.getSelectItemList(); } if (items.isEmpty()) { items = new ArrayList<JobTreeItem>(); items.add(null); } return items; } /** * ???? * * @return */ public JobTreeItem getCopyJobTreeItem() { return m_copyJobTreeItem; } /** * ??? * * @param copy */ public void setCopyJobTreeItem(JobTreeItem copy) { m_copyJobTreeItem = copy; } @Override public void dispose() { m_jobTree.removeFromTreeViewerList(); super.dispose(); } @Override public List<ObjectBean> getSelectedObjectBeans() { // ?????? JobTreeItem item = getSelectedJobunitItem(); // ????????? List<ObjectBean> objectBeans = new ArrayList<ObjectBean>(); if (item != null) { JobTreeItem manager = JobTreeItemUtil.getManager(item); String managerName = manager.getData().getId(); String objectId = item.getData().getJobunitId(); String objectType = HinemosModuleConstant.JOB; ObjectBean objectBean = new ObjectBean(managerName, objectType, objectId); objectBeans.add(objectBean); } return objectBeans; } @Override public String getSelectedOwnerRoleId() { // ?????? JobTreeItem item = getSelectedJobunitItem(); // ????????? String ownerRoleId = null; if (item != null) { ownerRoleId = item.getData().getOwnerRoleId(); } return ownerRoleId; } private JobTreeItem getSelectedJobunitItem() { JobTreeComposite tree = getJobTreeComposite(); WidgetTestUtil.setTestId(this, "tree", tree); JobListComposite list = getJobListComposite(); WidgetTestUtil.setTestId(this, "list", list); JobTreeItem item = null; if (this.lastFocusComposite instanceof JobTreeComposite) { item = tree.getSelectItemList().get(0); } else if (this.lastFocusComposite instanceof JobListComposite) { item = list.getSelectItemList().get(0); } else { // ?? } // ????????? if (item != null && item.getData().getType() == JobConstant.TYPE_JOBUNIT) { return item; } else { return null; } } }