Java tutorial
/* * Copyright 2013 Alessandro Atria * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.dynami.dialogs; import org.dynami.Activator; import org.dynami.Constants; import org.dynami.core.descriptor.PhaseDescriptor; import org.dynami.core.descriptor.StrategyDescriptor; import org.dynami.core.model.Param; import org.dynami.core.strategy.Phase; import org.dynami.core.util.DUtils; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.CellLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; import org.eclipse.wb.swt.ResourceManager; import org.eclipse.wb.swt.SWTResourceManager; public class StrategyDescriptorDialog extends Dialog { private final FormToolkit formToolkit = new FormToolkit(Display.getDefault()); private final StrategyDescriptor descriptor; private Label lblOwnerout; private Label lblVendorout; private Label versionOut; private Label lblReleasedout; private Label lblClassnameout; private Label lblDescriptionout; private Table paramsTable; private Table phasesTable; /** * Create the dialog. * @param parentShell */ public StrategyDescriptorDialog(final Shell parentShell, final StrategyDescriptor descriptor) { super(parentShell); this.descriptor = descriptor; } /** * Create contents of the dialog. * @param parent */ @Override protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); container.setLayout(new FillLayout(SWT.HORIZONTAL)); ScrolledForm scrldfrmStrategy = formToolkit.createScrolledForm(container); scrldfrmStrategy.setImage(ResourceManager.getPluginImage(Activator.PLUGIN_ID, Constants.ICONS.INFO)); formToolkit.paintBordersFor(scrldfrmStrategy); scrldfrmStrategy.setText(descriptor.getName()); scrldfrmStrategy.getBody().setLayout(new FillLayout(SWT.HORIZONTAL)); CTabFolder tabFolder = new CTabFolder(scrldfrmStrategy.getBody(), SWT.BORDER | SWT.BOTTOM); formToolkit.adapt(tabFolder); formToolkit.paintBordersFor(tabFolder); tabFolder.setSelectionBackground( Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT)); CTabItem tbtmDefinition = new CTabItem(tabFolder, SWT.NONE); tbtmDefinition.setText("Definition"); Composite definitionTab = new Composite(tabFolder, SWT.NONE); TableWrapLayout definitionTabLayout = new TableWrapLayout(); definitionTabLayout.numColumns = 2; definitionTab.setLayout(definitionTabLayout); tbtmDefinition.setControl(definitionTab); formToolkit.adapt(definitionTab); formToolkit.paintBordersFor(definitionTab); Label lblOwner = new Label(definitionTab, SWT.NONE); lblOwner.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1)); formToolkit.adapt(lblOwner, true, true); lblOwner.setText("Owner:"); lblOwnerout = new Label(definitionTab, SWT.NONE); lblOwnerout.setForeground(SWTResourceManager.getColor(SWT.COLOR_LINK_FOREGROUND)); lblOwnerout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); TableWrapData twd_lblOwnerout = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1); twd_lblOwnerout.grabHorizontal = true; lblOwnerout.setLayoutData(twd_lblOwnerout); formToolkit.adapt(lblOwnerout, true, true); lblOwnerout.setText(descriptor.getOwner()); Label lblVendor = new Label(definitionTab, SWT.NONE); lblVendor.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1)); formToolkit.adapt(lblVendor, true, true); lblVendor.setText("Vendor:"); lblVendorout = new Label(definitionTab, SWT.NONE); lblVendorout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); formToolkit.adapt(lblVendorout, true, true); lblVendorout.setText(descriptor.getVendor()); Label lblVersion = new Label(definitionTab, SWT.NONE); lblVersion.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1)); formToolkit.adapt(lblVersion, true, true); lblVersion.setText("Version:"); versionOut = new Label(definitionTab, SWT.NONE); versionOut.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); formToolkit.adapt(versionOut, true, true); versionOut.setText(String.valueOf(descriptor.getVersion())); Label lblReleased = new Label(definitionTab, SWT.NONE); lblReleased.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1)); formToolkit.adapt(lblReleased, true, true); lblReleased.setText("Released:"); lblReleasedout = formToolkit.createLabel(definitionTab, "", SWT.NONE); lblReleasedout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); lblReleasedout.setText(DUtils.DATE_FORMAT.format(descriptor.getReleased())); Label lblClassName = new Label(definitionTab, SWT.NONE); lblClassName.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1)); formToolkit.adapt(lblClassName, true, true); lblClassName.setText("Class name:"); lblClassnameout = formToolkit.createLabel(definitionTab, "classnameOut", SWT.NONE); lblClassnameout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); lblClassnameout.setText(descriptor.getClassName()); Label lblDescription = new Label(definitionTab, SWT.NONE); lblDescription.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1)); formToolkit.adapt(lblDescription, true, true); lblDescription.setText("Description:"); lblDescriptionout = formToolkit.createLabel(definitionTab, "descriptionOut", SWT.WRAP); lblDescriptionout.setForeground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_BORDER)); TableWrapData twd_lblDescriptionout = new TableWrapData(TableWrapData.FILL, TableWrapData.FILL_GRAB, 1, 1); twd_lblDescriptionout.heightHint = 139; lblDescriptionout.setLayoutData(twd_lblDescriptionout); lblDescriptionout.setText(descriptor.getDescription()); CTabItem tbtmParameters = new CTabItem(tabFolder, SWT.NONE); tbtmParameters.setText("Parameters"); Composite parametersTab = new Composite(tabFolder, SWT.NONE); tbtmParameters.setControl(parametersTab); formToolkit.adapt(parametersTab); formToolkit.paintBordersFor(parametersTab); parametersTab.setLayout(new FillLayout(SWT.HORIZONTAL)); TableViewer paramsTableViewer = new TableViewer(parametersTab, SWT.BORDER | SWT.FULL_SELECTION); paramsTableViewer.setContentProvider(ArrayContentProvider.getInstance()); paramsTable = paramsTableViewer.getTable(); paramsTable.setLinesVisible(true); paramsTable.setHeaderVisible(true); formToolkit.paintBordersFor(paramsTable); TableViewerColumn tableViewerColumn = new TableViewerColumn(paramsTableViewer, SWT.NONE); TableColumn tblclmnName = tableViewerColumn.getColumn(); tblclmnName.setWidth(62); tblclmnName.setText("Name"); tableViewerColumn.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { Param p = (Param) cell.getElement(); cell.setText(p.getName()); } }); TableViewerColumn tableViewerColumn_1 = new TableViewerColumn(paramsTableViewer, SWT.NONE); TableColumn tblclmnType = tableViewerColumn_1.getColumn(); tblclmnType.setWidth(58); tblclmnType.setText("Type"); tableViewerColumn_1.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { Param p = (Param) cell.getElement(); cell.setText(p.getType()); } }); TableViewerColumn tableViewerColumn_2 = new TableViewerColumn(paramsTableViewer, SWT.NONE); TableColumn tblclmnDefault = tableViewerColumn_2.getColumn(); tblclmnDefault.setWidth(100); tblclmnDefault.setText("Default"); tableViewerColumn_2.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { Param p = (Param) cell.getElement(); cell.setText(String.valueOf(p.get_default())); } }); TableViewerColumn tableViewerColumn_3 = new TableViewerColumn(paramsTableViewer, SWT.NONE); TableColumn tblclmnDescription = tableViewerColumn_3.getColumn(); tblclmnDescription.setWidth(202); tblclmnDescription.setText("Description"); tableViewerColumn_3.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { Param p = (Param) cell.getElement(); cell.setText(p.getDescription()); } }); CTabItem tbtmPhases = new CTabItem(tabFolder, SWT.NONE); tbtmPhases.setText("Phases"); Composite phasesTab = new Composite(tabFolder, SWT.NONE); tbtmPhases.setControl(phasesTab); formToolkit.adapt(phasesTab); formToolkit.paintBordersFor(phasesTab); phasesTab.setLayout(new FillLayout(SWT.HORIZONTAL)); TableViewer phasesTableViewer = new TableViewer(phasesTab, SWT.BORDER | SWT.FULL_SELECTION); phasesTableViewer.setContentProvider(ArrayContentProvider.getInstance()); phasesTable = phasesTableViewer.getTable(); phasesTable.setLinesVisible(true); phasesTable.setHeaderVisible(true); formToolkit.paintBordersFor(phasesTable); TableViewerColumn tableViewerColumn_4 = new TableViewerColumn(phasesTableViewer, SWT.NONE); TableColumn tblclmnName_1 = tableViewerColumn_4.getColumn(); tblclmnName_1.setWidth(109); tblclmnName_1.setText("Name"); tableViewerColumn_4.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { PhaseDescriptor p = (PhaseDescriptor) cell.getElement(); cell.setText(p.getName()); } }); TableViewerColumn tableViewerColumn_5 = new TableViewerColumn(phasesTableViewer, SWT.NONE); TableColumn tblclmnClassName = tableViewerColumn_5.getColumn(); tblclmnClassName.setWidth(204); tblclmnClassName.setText("Class Name"); tableViewerColumn_5.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { PhaseDescriptor p = (PhaseDescriptor) cell.getElement(); cell.setText(p.getClassName()); } }); TableViewerColumn tableViewerColumn_6 = new TableViewerColumn(phasesTableViewer, SWT.NONE); TableColumn tblclmnDescription_1 = tableViewerColumn_6.getColumn(); tblclmnDescription_1.setWidth(298); tblclmnDescription_1.setText("Description"); tableViewerColumn_6.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { PhaseDescriptor p = (PhaseDescriptor) cell.getElement(); cell.setText(p.getDescription()); } }); CTabItem tbtmPermissions = new CTabItem(tabFolder, SWT.NONE); tbtmPermissions.setText("Permissions"); Composite permissionsTab = new Composite(tabFolder, SWT.NONE); tbtmPermissions.setControl(permissionsTab); formToolkit.adapt(permissionsTab); formToolkit.paintBordersFor(permissionsTab); permissionsTab.setLayout(new FillLayout(SWT.HORIZONTAL)); TreeViewer permissionsTreeViewer = new TreeViewer(permissionsTab, SWT.BORDER); //permissionsTreeViewer.setContentProvider(ArrayContentProvider.getInstance()); Tree permissionsTree = permissionsTreeViewer.getTree(); permissionsTree.setLinesVisible(true); permissionsTree.setHeaderVisible(true); formToolkit.paintBordersFor(permissionsTree); TreeViewerColumn treeViewerColumn = new TreeViewerColumn(permissionsTreeViewer, SWT.NONE); TreeColumn trclmnPhase = treeViewerColumn.getColumn(); trclmnPhase.setWidth(100); trclmnPhase.setText("Phase"); treeViewerColumn.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { Phase p = (Phase) cell.getElement(); cell.setText(p.getName()); } }); TreeViewerColumn treeViewerColumn_1 = new TreeViewerColumn(permissionsTreeViewer, SWT.NONE); TreeColumn trclmnPermission = treeViewerColumn_1.getColumn(); trclmnPermission.setWidth(185); trclmnPermission.setText("Permission"); TreeViewerColumn treeViewerColumn_2 = new TreeViewerColumn(permissionsTreeViewer, SWT.NONE); TreeColumn trclmnValue = treeViewerColumn_2.getColumn(); trclmnValue.setWidth(310); trclmnValue.setText("Value"); CTabItem tbtmDependencies = new CTabItem(tabFolder, SWT.NONE); tbtmDependencies.setText("Dependencies"); Composite dependenciesTab = new Composite(tabFolder, SWT.NONE); TableWrapLayout dependenciesTabLayout = new TableWrapLayout(); dependenciesTabLayout.numColumns = 2; dependenciesTab.setLayout(dependenciesTabLayout); tbtmDependencies.setControl(dependenciesTab); formToolkit.adapt(dependenciesTab); formToolkit.paintBordersFor(dependenciesTab); paramsTableViewer.setInput(descriptor.getSettings().getParams()); phasesTableViewer.setInput(descriptor.getPhases()); return container; } /** * Create contents of the button bar. * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); } /** * Return the initial size of the dialog. */ @Override protected Point getInitialSize() { return new Point(500, 400); } }