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.monitor.run.composite; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.PlatformUI; import com.clustercontrol.util.WidgetTestUtil; import com.clustercontrol.dialog.CommonDialog; import com.clustercontrol.util.Messages; /** * ????<BR> * <p> * <dl> * <dt>?</dt> * <dd>???</dd> * <dd>?</dd> * <dd>?</dd> * <dd>?</dd> * <dd>?</dd> * <dd>??</dd> * <dd>??</dd> * <dd>??</dd> * <dd>??? </dd> * </dl> * * @version 5.0.0 * @since 5.0.0 */ public class TableItemInfoComposite<T> extends Composite { /** ? */ protected TableItemListComposite<T> m_infoList = null; protected ITableItemCompositeDefine<T> m_define = null; /** */ protected Button m_buttonAdd = null; /** */ protected Button m_buttonModify = null; /** */ protected Button m_buttonDelete = null; /** */ protected Button m_buttonCopy = null; /** ? */ protected Button m_buttonUp = null; /** ? */ protected Button m_buttonDown = null; // /** ?(#[LOG_LINE]) */ // private boolean logLineFlag = false; /** * ??? * <p> * ?????????? * * @param parent ?? * @param style * @param tableDefine ??{@link com.clustercontrol.bean.TableColumnInfo}? * * @see org.eclipse.swt.SWT * @see org.eclipse.swt.widgets.Composite#Composite(Composite parent, int style) * @see com.clustercontrol.bean.TableColumnInfo#TableColumnInfo(java.lang.String, int, int, int) * @see com.clustercontrol.monitor.run.action.GetStringFilterTableDefine * @see #initialize(ArrayList) */ public TableItemInfoComposite(Composite parent, int style, ITableItemCompositeDefine<T> define) { this(parent, style, define, null); } public TableItemInfoComposite(Composite parent, int style, ITableItemCompositeDefine<T> define, List<T> items) { super(parent, style); this.m_define = define; if (items != null) { this.m_define.initTableItemInfoManager(items); } else { this.m_define.initTableItemInfoManager(); } this.initialize(); } /** * ????? */ protected void initialize() { // ???? GridData gridData = null; GridLayout layout = new GridLayout(1, true); layout.marginHeight = 0; layout.marginWidth = 0; layout.numColumns = 15; this.setLayout(layout); /* * */ this.m_infoList = new TableItemListComposite<T>(this, SWT.BORDER, this.m_define); WidgetTestUtil.setTestId(this, "pagelist", m_infoList); gridData = new GridData(); gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalSpan = 11; this.m_infoList.setLayoutData(gridData); /* * ? */ Composite composite = new Composite(this, SWT.NONE); WidgetTestUtil.setTestId(this, "button", composite); layout = new GridLayout(1, true); if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.MULTI) != 0) { layout.numColumns = 2; } composite.setLayout(layout); gridData = new GridData(); gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalSpan = 4; composite.setLayoutData(gridData); // if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.ADD) != 0) { this.m_buttonAdd = this.createButton(composite, Messages.getString("add")); WidgetTestUtil.setTestId(this, "add", m_buttonAdd); this.m_buttonAdd.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // ? Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); CommonDialog dialog = m_define.createDialog(shell); if (dialog.open() == IDialogConstants.OK_ID) { m_define.getTableItemInfoManager().add(m_define.getCurrentCreatedItem()); m_infoList.update(); } } }); } // if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.MODIFY) != 0) { this.m_buttonModify = this.createButton(composite, Messages.getString("modify")); WidgetTestUtil.setTestId(this, "modify", m_buttonModify); this.m_buttonModify.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { T item = getSelectedItem(); if (item != null) { // ? Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); CommonDialog dialog = m_define.createDialog(shell, item); if (dialog.open() == IDialogConstants.OK_ID) { Table table = m_infoList.getTableViewer().getTable(); WidgetTestUtil.setTestId(this, "modify", table); int selectIndex = table.getSelectionIndex(); m_define.getTableItemInfoManager().modify(item, m_define.getCurrentCreatedItem()); m_infoList.update(); table.setSelection(selectIndex); } } else { MessageDialog.openWarning(null, Messages.getString("warning"), Messages.getString("message.monitor.30")); } } }); } // if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.DELETE) != 0) { this.m_buttonDelete = this.createButton(composite, Messages.getString("delete")); WidgetTestUtil.setTestId(this, "delete", m_buttonDelete); this.m_buttonDelete.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { T item = m_infoList.getTableItem(); if (item != null) { String detail = m_define.getItemsIdentifier(item); String[] args = { detail }; if (MessageDialog.openConfirm(null, Messages.getString("confirmed"), Messages.getString("message.monitor.31", args))) { m_define.getTableItemInfoManager().delete(getSelectedItem()); m_infoList.update(); } } else { MessageDialog.openWarning(null, Messages.getString("warning"), Messages.getString("message.monitor.30")); } } }); } // if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.COPY) != 0) { this.m_buttonCopy = this.createButton(composite, Messages.getString("copy")); WidgetTestUtil.setTestId(this, "copy", m_buttonCopy); this.m_buttonCopy.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { T item = m_infoList.getTableItem(); if (item != null) { // ? Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); CommonDialog dialog = m_define.createDialog(shell, item); if (dialog.open() == IDialogConstants.OK_ID) { Table table = m_infoList.getTableViewer().getTable(); WidgetTestUtil.setTestId(this, "modify", table); int selectIndex = table.getSelectionIndex(); m_define.getTableItemInfoManager().add(m_define.getCurrentCreatedItem()); m_infoList.update(); table.setSelection(selectIndex); } } else { MessageDialog.openWarning(null, Messages.getString("warning"), Messages.getString("message.monitor.30")); } } }); } // if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.SPACE) != 0) { Label label = new Label(composite, SWT.NONE); // WidgetTestUtil.setTestId(this, "space", label); } // ? if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.UP) != 0) { this.m_buttonUp = this.createButton(composite, Messages.getString("up")); WidgetTestUtil.setTestId(this, "up", m_buttonUp); this.m_buttonUp.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { T item = m_infoList.getTableItem(); if (item != null) { if (m_define.getTableItemInfoManager().upOrder(item)) { m_infoList.update(); selectItem(item); } } else { MessageDialog.openWarning(null, Messages.getString("warning"), Messages.getString("message.monitor.30")); } } }); } // ? if ((this.m_define.getButtonOptions() & ITableItemCompositeDefine.DOWN) != 0) { this.m_buttonDown = this.createButton(composite, Messages.getString("down")); WidgetTestUtil.setTestId(this, "down", m_buttonDown); this.m_buttonDown.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { T item = m_infoList.getTableItem(); if (item != null) { if (m_define.getTableItemInfoManager().downOrder(item)) { m_infoList.update(); selectItem(item); } } else { MessageDialog.openWarning(null, Messages.getString("warning"), Messages.getString("message.monitor.30")); } } }); } } /** * ?????????? * * @param info ???? */ public void setInputData(List<T> list) { if (list != null) { this.m_infoList.setInputData(list); } // this.update(); } /* (? Javadoc) * @see org.eclipse.swt.widgets.Control#setEnabled(boolean) */ @Override public void setEnabled(boolean enabled) { this.m_infoList.setEnabled(enabled); if (this.m_buttonAdd != null) { this.m_buttonAdd.setEnabled(enabled); } if (this.m_buttonModify != null) { this.m_buttonModify.setEnabled(enabled); } if (this.m_buttonDelete != null) { this.m_buttonDelete.setEnabled(enabled); } if (this.m_buttonCopy != null) { this.m_buttonCopy.setEnabled(enabled); } if (this.m_buttonUp != null) { this.m_buttonUp.setEnabled(enabled); } if (this.m_buttonDown != null) { this.m_buttonDown.setEnabled(enabled); } } /** * ??? * * @param parent ?? * @param label ?? * @return */ protected Button createButton(Composite parent, String label) { Button button = new Button(parent, SWT.NONE); WidgetTestUtil.setTestId(this, null, button); GridData gridData = new GridData(); gridData.horizontalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = true; button.setLayoutData(gridData); button.setText(label); return button; } /** * ????????? * * @param identifier */ protected void selectItem(T item) { Table table = this.m_infoList.getTableViewer().getTable(); WidgetTestUtil.setTestId(this, null, table); TableItem[] items = table.getItems(); if (items == null || item == null) { return; } for (int i = 0; i < items.length; i++) { @SuppressWarnings("unchecked") T tmpItem = (T) items[i].getData(); WidgetTestUtil.setTestId(this, "items" + i, items[i]); if (item.equals(tmpItem)) { table.select(i); return; } } } /** * ???????? * * @return ?????????<code>null</code> */ protected T getSelectedItem() { StructuredSelection selection = (StructuredSelection) this.m_infoList.getTableViewer().getSelection(); @SuppressWarnings("unchecked") T tableItemInfo = (T) selection.getFirstElement(); return tableItemInfo; } /** * ??????? * * @return List<T> */ public List<T> getItems() { return this.m_infoList.getTableItemData(); } }