summaryrefslogtreecommitdiffstats
path: root/src/com/ibm/ServerWizard2/view/MainDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/ibm/ServerWizard2/view/MainDialog.java')
-rw-r--r--src/com/ibm/ServerWizard2/view/MainDialog.java1290
1 files changed, 1290 insertions, 0 deletions
diff --git a/src/com/ibm/ServerWizard2/view/MainDialog.java b/src/com/ibm/ServerWizard2/view/MainDialog.java
new file mode 100644
index 0000000..9aa5d30
--- /dev/null
+++ b/src/com/ibm/ServerWizard2/view/MainDialog.java
@@ -0,0 +1,1290 @@
+package com.ibm.ServerWizard2.view;
+
+import java.util.Map;
+import java.util.Vector;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowData;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+import com.ibm.ServerWizard2.ServerWizard2;
+import com.ibm.ServerWizard2.controller.TargetWizardController;
+import com.ibm.ServerWizard2.model.Attribute;
+import com.ibm.ServerWizard2.model.Connection;
+import com.ibm.ServerWizard2.model.ConnectionEndpoint;
+import com.ibm.ServerWizard2.model.Field;
+import com.ibm.ServerWizard2.model.Target;
+import com.ibm.ServerWizard2.utility.GithubFile;
+
+public class MainDialog extends Dialog {
+ private TableViewer viewer;
+ private Tree tree;
+ private TreeColumn columnName;
+ private Text txtInstanceName;
+ private Combo combo;
+ private Menu popupMenu;
+ private Composite container;
+ private TreeItem selectedEndpoint;
+ private String currentPath;
+
+ private Target targetForConnections;
+ private ConnectionEndpoint source;
+ private ConnectionEndpoint dest;
+
+ private TargetWizardController controller;
+
+ // Buttons
+ private Button btnAddTarget;
+ private Button btnCopyInstance;
+ private Button btnDefaults;
+ private Button btnDeleteTarget;
+ private Button btnSave;
+ private Button btnOpen;
+ private Button btnOpenLib;
+ private Button btnDeleteConnection;
+ private Button btnSaveAs;
+
+ // document state
+ private Boolean dirty = false;
+ public String mrwFilename = "";
+
+ private Button btnRunChecks;
+ private SashForm sashForm;
+ private SashForm sashForm_1;
+
+ private Composite compositeBus;
+ private Label lblInstanceType;
+ private Composite compositeInstance;
+ private Composite composite;
+ private Composite buttonRow1;
+
+ private Vector<Field> attributes;
+ private Combo cmbBusses;
+ private Label lblChooseBus;
+ private Label lblSelectedCard;
+ private Boolean busMode = false;
+ private TabFolder tabFolder;
+ private TabItem tbtmAddInstances;
+ private TabItem tbtmAddBusses;
+ private Combo cmbCards;
+ private Boolean targetFound = false;
+ private List listBusses;
+ private Label lblBusDirections;
+ private Label lblInstanceDirections;
+ private Composite compositeDir;
+ private Button btnHideBusses;
+ private Button btnShowHidden;
+
+ private AttributeEditingSupport attributeEditor;
+ private Label label;
+ private Label label_1;
+ /**
+ * Create the dialog.
+ *
+ * @param parentShell
+ */
+ public MainDialog(Shell parentShell) {
+ super(parentShell);
+ setShellStyle(SWT.BORDER | SWT.MIN | SWT.MAX | SWT.RESIZE | SWT.APPLICATION_MODAL);
+ }
+
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText("ServerWiz2");
+ }
+
+ public void setController(TargetWizardController t) {
+ controller = t;
+ }
+
+ /**
+ * Create contents of the dialog.
+ *
+ * @param parent
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ container = (Composite) super.createDialogArea(parent);
+ container.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ GridLayout gl_container = new GridLayout(1, false);
+ gl_container.verticalSpacing = 0;
+ container.setLayout(gl_container);
+
+ composite = new Composite(container, SWT.NONE);
+
+ RowLayout rl_composite = new RowLayout(SWT.HORIZONTAL);
+ rl_composite.spacing = 20;
+ rl_composite.wrap = false;
+ rl_composite.fill = true;
+ composite.setLayout(rl_composite);
+ GridData gd_composite = new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1);
+ gd_composite.widthHint = 918;
+ gd_composite.heightHint = 135;
+ composite.setLayoutData(gd_composite);
+
+ sashForm_1 = new SashForm(container, SWT.BORDER | SWT.VERTICAL);
+ GridData gd_sashForm_1 = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
+ gd_sashForm_1.heightHint = 375;
+ gd_sashForm_1.widthHint = 712;
+ sashForm_1.setLayoutData(gd_sashForm_1);
+
+ buttonRow1 = new Composite(container, SWT.NONE);
+ GridData gd_buttonRow1 = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1);
+ gd_buttonRow1.widthHint = 751;
+ buttonRow1.setLayoutData(gd_buttonRow1);
+ GridLayout rl_buttonRow1 = new GridLayout(18, false);
+ buttonRow1.setLayout(rl_buttonRow1);
+
+ this.createButtonsForButtonBar2(buttonRow1);
+
+
+ sashForm = new SashForm(sashForm_1, SWT.NONE);
+
+ // Target Instances View
+ tree = new Tree(sashForm, SWT.BORDER | SWT.VIRTUAL);
+ tree.setToolTipText("To add an instance\r\n- click on parent\r\n- choose an instance type\r\n- click add instance");
+ tree.setHeaderVisible(true);
+ tree.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ columnName = new TreeColumn(tree, 0);
+ columnName.setText("Instances");
+ columnName
+ .setToolTipText("To add a new instance, choose parent instance. A list of child instances will appear in Instance Type combo.\r\n"
+ + "Select and Instance type. You can optionally enter a custom name. Then click 'Add Instance' button.");
+
+ columnName.setResizable(true);
+ // sashForm.setWeights(new int[] { 283, 283 });
+
+ // Create attribute table
+ viewer = new TableViewer(sashForm_1, SWT.VIRTUAL | SWT.H_SCROLL | SWT.V_SCROLL
+ | SWT.FULL_SELECTION | SWT.BORDER);
+
+ this.createAttributeTable();
+ sashForm_1.setWeights(new int[] { 1, 1 });
+
+ // //////////////////////////////////////////////////////////
+ // Tab folders
+ tabFolder = new TabFolder(composite, SWT.NONE);
+
+ tbtmAddInstances = new TabItem(tabFolder, SWT.NONE);
+ tbtmAddInstances.setText("Instances");
+
+ // //////////////////////////////////////
+ // Add instances tab
+ compositeInstance = new Composite(tabFolder, SWT.BORDER);
+ tbtmAddInstances.setControl(compositeInstance);
+ compositeInstance.setLayout(new GridLayout(3, false));
+
+ lblInstanceType = new Label(compositeInstance, SWT.NONE);
+ lblInstanceType.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblInstanceType.setText("Instance Type:");
+ lblInstanceType.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+
+ combo = new Combo(compositeInstance, SWT.READ_ONLY);
+ GridData gd_combo = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ gd_combo.widthHint = 167;
+ combo.setLayoutData(gd_combo);
+ combo.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+
+ btnAddTarget = new Button(compositeInstance, SWT.NONE);
+ btnAddTarget.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+ btnAddTarget.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnAddTarget.setText("Add Instance");
+ btnAddTarget.setEnabled(false);
+
+ Label lblName = new Label(compositeInstance, SWT.NONE);
+ lblName.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblName.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ lblName.setText("Custom Name:");
+
+ txtInstanceName = new Text(compositeInstance, SWT.BORDER);
+ GridData gd_txtInstanceName = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ gd_txtInstanceName.widthHint = 175;
+ txtInstanceName.setLayoutData(gd_txtInstanceName);
+ txtInstanceName.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+
+ btnDeleteTarget = new Button(compositeInstance, SWT.NONE);
+ btnDeleteTarget.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+ btnDeleteTarget.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnDeleteTarget.setText("Delete Instance");
+
+ btnShowHidden = new Button(compositeInstance, SWT.CHECK);
+ GridData gd_btnShowHidden = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnShowHidden.heightHint = 10;
+ btnShowHidden.setLayoutData(gd_btnShowHidden);
+ btnShowHidden.setText(" Show Hidden");
+
+ btnCopyInstance = new Button(compositeInstance, SWT.NONE);
+ btnCopyInstance.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1));
+ btnCopyInstance.setText("Copy Node or Connector");
+ btnCopyInstance.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnCopyInstance.setEnabled(false);
+
+ btnDefaults = new Button(compositeInstance, SWT.NONE);
+ btnDefaults.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1));
+ btnDefaults.setText("Restore Defaults");
+ btnDefaults.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnDefaults.setEnabled(false);
+
+ // ////////////////////////////////////////////////////
+ // Add Busses Tab
+
+ tbtmAddBusses = new TabItem(tabFolder, SWT.NONE);
+ tbtmAddBusses.setText("Busses");
+
+ compositeBus = new Composite(tabFolder, SWT.BORDER);
+ tbtmAddBusses.setControl(compositeBus);
+ compositeBus.setLayout(new GridLayout(2, false));
+
+ lblChooseBus = new Label(compositeBus, SWT.NONE);
+ lblChooseBus.setAlignment(SWT.RIGHT);
+ GridData gd_lblChooseBus = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
+ gd_lblChooseBus.widthHint = 88;
+ lblChooseBus.setLayoutData(gd_lblChooseBus);
+ lblChooseBus.setText("Select Bus:");
+
+ cmbBusses = new Combo(compositeBus, SWT.READ_ONLY);
+ cmbBusses.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false, 1, 1));
+
+ cmbBusses.add("NONE");
+ cmbBusses.setData(null);
+ cmbBusses.select(0);
+
+ lblSelectedCard = new Label(compositeBus, SWT.NONE);
+ lblSelectedCard.setAlignment(SWT.RIGHT);
+ GridData gd_lblSelectedCard = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
+ gd_lblSelectedCard.widthHint = 93;
+ lblSelectedCard.setLayoutData(gd_lblSelectedCard);
+ lblSelectedCard.setText("Select Card:");
+
+ cmbCards = new Combo(compositeBus, SWT.READ_ONLY);
+ cmbCards.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+
+ btnDeleteConnection = new Button(compositeBus, SWT.NONE);
+ btnDeleteConnection.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+ btnDeleteConnection.setText("Delete Connection");
+ btnDeleteConnection.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+
+ btnHideBusses = new Button(compositeBus, SWT.CHECK);
+ btnHideBusses.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+ btnHideBusses.setText("Show only busses of selected type");
+ btnHideBusses.setSelection(true);
+
+ StackLayout stackLayout = new StackLayout();
+ compositeDir = new Composite(composite, SWT.NONE);
+ compositeDir.setLayout(stackLayout);
+ compositeDir.setLayoutData(new RowData(382, SWT.DEFAULT));
+
+ lblInstanceDirections = new Label(compositeDir, SWT.NONE);
+ lblInstanceDirections.setFont(SWTResourceManager.getFont("Arial", 8, SWT.NORMAL));
+ lblInstanceDirections.setText("Select 'chip' to create a new part or 'sys-' to create a system\r\n"
+ + "1. Select parent instance in Instance Tree\r\n"
+ + "2. Select new instance type in dropdown\r\n"
+ + "3. (Optional) Enter custom name\r\n" + "4. Click \"Add Instance\"");
+ lblInstanceDirections.setForeground(SWTResourceManager.getColor(SWT.COLOR_BLUE));
+ stackLayout.topControl = this.lblInstanceDirections;
+
+ lblBusDirections = new Label(compositeDir, SWT.NONE);
+ lblBusDirections.setForeground(SWTResourceManager.getColor(SWT.COLOR_BLUE));
+ lblBusDirections
+ .setText("Steps for adding a new connection:\r\n"
+ + "1. Select a bus type from dropdown\r\n"
+ + "2. Select the card on which the bus is on from dropdown\r\n"
+ + "3. Navigate to connection source in Instances Tree view on left\r\n"
+ + "4. Right-click on source and select \"Set Source\"\r\n"
+ + "5. Navigate to connection destination\r\n6. Right-click on destination and select \"Add Connection\"");
+
+ listBusses = new List(sashForm, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+
+ this.addEvents();
+
+ controller.init();
+
+ this.setDirtyState(false);
+ // load file if passed on command line
+ if (!mrwFilename.isEmpty()) {
+ controller.readXML(mrwFilename);
+ setFilename(mrwFilename);
+ }
+ for (Target t : controller.getBusTypes()) {
+ cmbBusses.add(t.getType());
+ cmbBusses.setData(t.getType(), t);
+ }
+ this.initInstanceMode();
+ // columnName.setWidth(200);
+ sashForm.setWeights(new int[] { 1, 1 });
+ columnName.pack();
+
+ return container;
+ }
+
+ protected void createButtonsForButtonBar(Composite parent) {
+ parent.setEnabled(false);
+ GridLayout layout = (GridLayout)parent.getLayout();
+ layout.marginHeight = 0;
+ }
+
+ protected void createButtonsForButtonBar2(Composite row1) {
+ row1.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+
+ Button btnNew = createButton(row1, IDialogConstants.NO_ID, "New", false);
+ GridData gd_btnNew = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnNew.widthHint = 70;
+ btnNew.setLayoutData(gd_btnNew);
+ btnNew.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnNew.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (dirty) {
+ if (!MessageDialog.openConfirm(null, "Save Resource", mrwFilename
+ + "has been modified. Ignore changes?")) {
+ return;
+ }
+ ServerWizard2.LOGGER.info("Discarding changes");
+ }
+ try {
+ controller.initModel();
+ setFilename("");
+ initAll();
+ setDirtyState(false);
+ refreshInstanceTree();
+ refreshConnections();
+ updateView();
+
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+ }
+ });
+
+ btnOpen = createButton(row1, IDialogConstants.NO_ID, "Open...", false);
+ GridData gd_btnOpen = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnOpen.widthHint = 70;
+ btnOpen.setLayoutData(gd_btnOpen);
+ btnOpen.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnOpen.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (dirty) {
+ if (!MessageDialog.openConfirm(null, "Save Resource", mrwFilename
+ + "has been modified. Ignore changes?")) {
+ return;
+ }
+ ServerWizard2.LOGGER.info("Discarding changes");
+ }
+ Button b = (Button) e.getSource();
+ FileDialog fdlg = new FileDialog(b.getShell(), SWT.OPEN);
+ String ext[] = { "*.xml" };
+ fdlg.setFilterExtensions(ext);
+ String filename = fdlg.open();
+ if (filename == null) {
+ return;
+ }
+ Boolean dirty = controller.readXML(filename);
+ setFilename(filename);
+ initAll();
+ setDirtyState(dirty);
+ }
+ });
+ btnOpen.setToolTipText("Loads XML from file");
+
+ btnSave = createButton(row1, IDialogConstants.NO_ID, "Save", false);
+ GridData gd_btnSave = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnSave.widthHint = 70;
+ btnSave.setLayoutData(gd_btnSave);
+ btnSave.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnSave.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String filename = mrwFilename;
+ if (mrwFilename.isEmpty()) {
+ Button b = (Button) e.getSource();
+ FileDialog fdlg = new FileDialog(b.getShell(), SWT.SAVE);
+ String ext[] = { "*.xml" };
+ fdlg.setFilterExtensions(ext);
+ fdlg.setOverwrite(true);
+ filename = fdlg.open();
+ if (filename == null) {
+ return;
+ }
+ }
+ controller.writeXML(filename);
+ setFilename(filename);
+ setDirtyState(false);
+ }
+ });
+ btnSave.setText("Save");
+
+ btnSaveAs = createButton(row1, IDialogConstants.NO_ID, "Save As...", false);
+ GridData gd_btnSaveAs = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnSaveAs.widthHint = 70;
+ btnSaveAs.setLayoutData(gd_btnSaveAs);
+ btnSaveAs.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Button b = (Button) e.getSource();
+ FileDialog fdlg = new FileDialog(b.getShell(), SWT.SAVE);
+ String ext[] = { "*.xml" };
+ fdlg.setFilterExtensions(ext);
+ fdlg.setOverwrite(true);
+ String filename = fdlg.open();
+ if (filename == null) {
+ return;
+ }
+ controller.writeXML(filename);
+ setFilename(filename);
+ setDirtyState(false);
+ }
+ });
+
+ btnSaveAs.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnSaveAs.setEnabled(true);
+
+ label = new Label(buttonRow1, SWT.SEPARATOR | SWT.VERTICAL);
+ GridData gd_sep = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_sep.heightHint = 30;
+ gd_sep.widthHint = 50;
+ label.setLayoutData(gd_sep);
+
+ btnOpenLib = createButton(row1, IDialogConstants.NO_ID, "Open Lib", false);
+ GridData gd_btnOpenLib = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnOpenLib.widthHint = 74;
+
+ btnOpenLib.setLayoutData(gd_btnOpenLib);
+ btnOpenLib.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnOpenLib.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Button b = (Button) e.getSource();
+ DirectoryDialog fdlg = new DirectoryDialog(b.getShell(), SWT.OPEN);
+ fdlg.setFilterPath(controller.getWorkingDir());
+ String libPath = fdlg.open();
+ if (libPath == null) {
+ return;
+ }
+ controller.loadLibrary(libPath);
+ }
+ });
+ btnOpenLib.setToolTipText("Loads External Library");
+
+
+ btnRunChecks = createButton(row1, IDialogConstants.NO_ID, "Export HTML", false);
+ GridData gd_btnRunChecks = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnRunChecks.widthHint = 80;
+ btnRunChecks.setLayoutData(gd_btnRunChecks);
+ btnRunChecks.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ String tempFile = System.getProperty("java.io.tmpdir")
+ + System.getProperty("file.separator") + "~temp.xml";
+ controller.writeXML(tempFile);
+ String htmlFilename = mrwFilename;
+ htmlFilename = htmlFilename.replace(".xml", "") + ".html";
+ controller.runChecks(tempFile,htmlFilename);
+ }
+ });
+ btnRunChecks.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+
+ Button btnForceUpdate = createButton(row1, IDialogConstants.NO_ID, "Force Update", false);
+ GridData gd_btnForceUpdate = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnForceUpdate.widthHint = 80;
+ btnForceUpdate.setLayoutData(gd_btnForceUpdate);
+ btnForceUpdate.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnForceUpdate.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ GithubFile.removeUpdateFile(true);
+ }
+ });
+
+ label_1 = new Label(buttonRow1, SWT.SEPARATOR | SWT.VERTICAL);
+ GridData gd_sep2 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_sep2.heightHint = 30;
+ gd_sep2.widthHint = 50;
+ label_1.setLayoutData(gd_sep2);
+
+ Button btnExit = createButton(row1, IDialogConstants.CLOSE_ID, "Exit", false);
+ GridData gd_btnExit = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ gd_btnExit.widthHint = 80;
+ btnExit.setLayoutData(gd_btnExit);
+ btnExit.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ btnExit.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Button b = (Button) e.getSource();
+ b.getShell().close();
+ }
+ });
+ }
+
+ /**
+ * Return the initial size of the dialog.
+ */
+ @Override
+ protected Point getInitialSize() {
+ return new Point(933, 796);
+ }
+
+ // ////////////////////////////////////////////////////
+ // Utility helpers
+ private Target getSelectedTarget() {
+ if (tree.getSelectionCount() > 0) {
+ return (Target) tree.getSelection()[0].getData();
+ }
+ return null;
+ }
+
+ private void initAll() {
+ tabFolder.setSelection(0);
+ initInstanceMode();
+ }
+
+ private void initBusMode() {
+ busMode = true;
+ this.lblBusDirections.setEnabled(true);
+ this.lblBusDirections.setVisible(true);
+ this.lblInstanceDirections.setVisible(false);
+ this.lblInstanceDirections.setEnabled(false);
+
+ // update card combo
+ cmbCards.removeAll();
+ this.targetForConnections = null;
+ for (Target target : controller.getConnectionCapableTargets()) {
+ cmbCards.add(target.getName());
+ cmbCards.setData(target.getName(), target);
+ }
+ if (cmbCards.getItemCount() > 0) {
+ cmbCards.select(-1);
+ //this.targetForConnections = (Target)cmbCards.getData();
+ }
+ for (TreeItem item : tree.getItems()) {
+ Target target = (Target) item.getData();
+ // controller.getRootTarget().hideBusses();
+ controller.hideBusses(target);
+ }
+
+
+ this.source = null;
+ this.dest = null;
+ this.selectedEndpoint = null;
+ refreshInstanceTree();
+ refreshConnections();
+ this.updateView();
+ }
+
+ private void initInstanceMode() {
+ busMode = false;
+ this.lblInstanceDirections.setEnabled(true);
+ this.lblInstanceDirections.setVisible(true);
+
+ this.lblBusDirections.setEnabled(false);
+ this.lblBusDirections.setVisible(false);
+
+ this.targetForConnections = null;
+ this.refreshInstanceTree();
+ this.listBusses.removeAll();
+ this.updateView();
+ }
+
+ private void updateChildCombo(Target targetInstance) {
+ btnAddTarget.setEnabled(false);
+ Vector<Target> v = controller.getChildTargets(targetInstance);
+ combo.removeAll();
+ if (v != null) {
+ for (Target target : v) {
+ combo.add(target.getType());
+ combo.setData(target.getType(), target);
+ }
+ if (combo.getItemCount() > 0) {
+ combo.select(0);
+ }
+ btnAddTarget.setEnabled(true);
+ }
+ }
+
+ private void updateView() {
+ Target targetInstance = getSelectedTarget();
+ if (targetInstance == null) {
+ btnAddTarget.setEnabled(false);
+ btnDeleteTarget.setEnabled(false);
+ btnCopyInstance.setEnabled(false);
+ btnDefaults.setEnabled(false);
+ updateChildCombo(null);
+ return;
+ }
+ updatePopupMenu(targetInstance);
+ updateChildCombo(targetInstance);
+
+ TreeItem item = tree.getSelection()[0];
+ ConnectionEndpoint ep = this.getEndpoint(item, null);
+ refreshAttributes(targetInstance,ep);
+
+ if (targetInstance.isSystem()) {
+ btnDeleteTarget.setEnabled(false);
+ } else {
+ btnDeleteTarget.setEnabled(true);
+ }
+ if (targetInstance.isNode() || targetInstance.isConnector()) {
+ btnCopyInstance.setEnabled(true);
+ } else {
+ btnCopyInstance.setEnabled(false);
+ }
+ btnDefaults.setEnabled(true);
+ }
+
+
+ private void updatePopupMenu(Target selectedTarget) {
+ if (selectedTarget == null || tree.getSelectionCount()==0) {
+ return;
+ }
+ if (popupMenu != null) {
+ popupMenu.dispose();
+ }
+
+ popupMenu = new Menu(tree);
+
+ if (busMode) {
+ if (cmbBusses.getSelectionIndex() > 0) {
+ if (targetForConnections != null && selectedTarget.getAttribute("CLASS").equals("UNIT")) {
+ if (selectedTarget.isOutput()) {
+ MenuItem srcItem = new MenuItem(popupMenu, SWT.NONE);
+ srcItem.setText("Set Source");
+ srcItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ source = getEndpoint(true);
+ }
+ });
+ }
+ }
+ if (source != null && selectedTarget.isInput()) {
+ MenuItem connItem = new MenuItem(popupMenu, SWT.NONE);
+ connItem.setText("Add Connection");
+ connItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ dest = getEndpoint(false);
+ addConnection(false);
+ }
+ });
+ MenuItem cableItem = new MenuItem(popupMenu, SWT.NONE);
+ cableItem.setText("Add Cable");
+ cableItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ dest = getEndpoint(false);
+ addConnection(true);
+ }
+ });
+ }
+ } else {
+ targetForConnections = null;
+ source = null;
+ dest = null;
+ }
+ }
+ TreeItem item = tree.getSelection()[0];
+ TreeItem parentItem = item.getParentItem();
+ if (parentItem != null) {
+ Target configParentTarget = (Target) parentItem.getData();
+ if (configParentTarget.attributeExists("IO_CONFIG_SELECT")) {
+ MenuItem deconfigItem = new MenuItem(popupMenu, SWT.NONE);
+ deconfigItem.setText("Deconfig");
+ deconfigItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ setConfig(false);
+ }
+ });
+ MenuItem configItem = new MenuItem(popupMenu, SWT.NONE);
+ configItem.setText("Select Config");
+ configItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ setConfig(true);
+ }
+ });
+ }
+ }
+ tree.setMenu(popupMenu);
+ }
+
+ public void setConfig(boolean config) {
+ TreeItem item = tree.getSelection()[0];
+ Target target = (Target) item.getData();
+ TreeItem parentItem = item.getParentItem();
+
+ if (parentItem == null) {
+ ServerWizard2.LOGGER.warning(target.getName() + " parent is null");
+ return;
+ }
+ TreeItem grandParentItem = parentItem.getParentItem();
+ Target configParentTarget = (Target) parentItem.getData();
+ String configNum = target.getAttribute("IO_CONFIG_NUM");
+ if (configNum.isEmpty()) {
+ ServerWizard2.LOGGER.warning(target.getName() + " IO_CONFIG_NUM attribute is empty");
+ return;
+ }
+ ConnectionEndpoint ep = getEndpoint(parentItem,null);
+ String path = "/"+ep.getName();
+ if (config) {
+ controller.setGlobalSetting(path, "IO_CONFIG_SELECT", configNum);
+ } else {
+ controller.setGlobalSetting(path, "IO_CONFIG_SELECT", "0");
+ }
+ for (TreeItem childItem : parentItem.getItems()) {
+ clearTree(childItem);
+ }
+ currentPath="/"+ep.getPath();
+ currentPath=currentPath.substring(0, currentPath.length()-1);
+ this.updateInstanceTree(configParentTarget, grandParentItem, parentItem);
+ }
+
+ private ConnectionEndpoint getEndpoint(TreeItem item, String stopCard) {
+ ConnectionEndpoint endpoint = new ConnectionEndpoint();
+
+ Target target = (Target) item.getData();
+ endpoint.setTargetName(target.getName());
+
+ Boolean done = false;
+ Boolean found = false;
+ TreeItem parentItem = item.getParentItem();
+
+ while (!done) {
+ if (parentItem==null) {
+ done=true;
+ } else {
+ Target parentTarget = (Target) parentItem.getData();
+ String parentName = parentTarget.getName();
+ if (parentName.equals(stopCard)) {
+ done = true;
+ found = true;
+ } else {
+ endpoint.setPath(parentName + "/" + endpoint.getPath());
+ parentItem = parentItem.getParentItem();
+ }
+ }
+ }
+
+ if (!found && stopCard != null) {
+ MessageDialog.openError(null, "Connection Error", "The connection must start and end on or below selected card.");
+ endpoint=null;
+ }
+ return endpoint;
+ }
+
+ private ConnectionEndpoint getEndpoint(boolean setBold) {
+ TreeItem item = tree.getSelection()[0];
+ ConnectionEndpoint endpoint = getEndpoint(item,cmbCards.getText());
+ if (setBold && endpoint != null) {
+ setEndpointState(item);
+ }
+ return endpoint;
+ }
+
+ public void setEndpointState(TreeItem item) {
+ if (item != selectedEndpoint && selectedEndpoint != null) {
+ this.setFontStyle(selectedEndpoint, SWT.BOLD, false);
+ }
+ this.setFontStyle(item, SWT.BOLD | SWT.ITALIC, true);
+ selectedEndpoint = item;
+ }
+
+ private void refreshAttributes(Target targetInstance,ConnectionEndpoint ep) {
+ attributes.clear();
+ for (Map.Entry<String, Attribute> entry : targetInstance.getAttributes().entrySet()) {
+
+ Attribute attribute = entry.getValue();
+ if (!attribute.isHidden()) {
+ if (attribute.isGlobal() && !controller.getModelCreationMode()) {
+ if (ep !=null) {
+ String path="/"+ep.getName();
+ Field field = controller.getGlobalSetting(path, attribute.name);
+ if (field==null) {
+ controller.setGlobalSetting(path, attribute.name, "");
+ field = controller.getGlobalSetting(path, attribute.name);
+ }
+ field.type = attribute.getValue().getType();
+ if (field.type.equals("enumeration")) {
+ field.enumerator = attribute.getValue().getFields().get(0).enumerator;
+ }
+ attributes.add(field);
+ }
+ } else {
+ for (Field field : attribute.getValue().getFields())
+ attributes.add(field);
+ }
+ }
+ }
+ viewer.refresh();
+ }
+
+ private void clearTreeAll() {
+ if (tree.getItemCount() > 0) {
+ clearTree(tree.getItem(0));
+ }
+ tree.removeAll();
+ }
+
+ private void clearTree(TreeItem treeitem) {
+ for (int i = 0; i < treeitem.getItemCount(); i++) {
+ clearTree(treeitem.getItem(i));
+ }
+ treeitem.removeAll();
+ treeitem.dispose();
+ }
+ private void refreshInstanceTree() {
+ currentPath="";
+ targetFound = false;
+ for (Target target : controller.getRootTargets()) {
+ this.updateInstanceTree(target, null);
+ }
+ if (controller.getRootTargets().size() == 0) {
+ this.clearTreeAll();
+ }
+ btnAddTarget.setEnabled(false);
+ }
+
+ public void updateInstanceTree(Target target, TreeItem parentItem) {
+ this.updateInstanceTree(target, parentItem, null);
+ }
+
+ private void updateInstanceTree(Target target, TreeItem parentItem, TreeItem item) {
+ if (target == null) {
+ return;
+ }
+ if (target.isHidden()) {
+ return;
+ }
+ if (parentItem==null) {
+ this.clearTreeAll();
+ }
+ boolean hideBus = false;
+ String name = target.getName();
+ String lastPath = currentPath;
+ currentPath=currentPath+"/"+name;
+
+ if (busMode) {
+ if (!target.isSystem() && !cmbBusses.getText().equals("NONE")) {
+ if (target.isBusHidden(cmbBusses.getText())) {
+ hideBus = true;
+ if (btnHideBusses.getSelection()) {
+ currentPath=lastPath;
+ return;
+ }
+ }
+ }
+ if (parentItem != null) {
+ if (controller.isGlobalSettings(lastPath, "IO_CONFIG_SELECT")) {
+ Field cnfgSelect = controller.getGlobalSetting(lastPath, "IO_CONFIG_SELECT");
+ if (!cnfgSelect.value.isEmpty() && !cnfgSelect.value.equals("0")) {
+ String cnfg = target.getAttribute("IO_CONFIG_NUM");
+ if (!cnfg.equals(cnfgSelect.value)) {
+ hideBus = true;
+ if (btnHideBusses.getSelection()) {
+ currentPath=lastPath;
+ return;
+ }
+ }
+ }
+ }
+ }
+ if (!hideBus) {
+ String sch = target.getAttribute("SCHEMATIC_INTERFACE");
+ if (!sch.isEmpty()) {
+ name = name + " (" + sch + ")";
+ }
+ if (target.isInput() && target.isOutput()) {
+ name = name + " <=>";
+ } else if (target.isInput()) {
+ name = name + " <=";
+ } else if (target.isOutput()) {
+ name = name + " =>";
+ }
+ }
+ }
+ Vector<Target> children = controller.getVisibleChildren(target,this.btnShowHidden.getSelection());
+ TreeItem treeitem = item;
+ if (item == null) {
+ if (parentItem == null) {
+ //clearTreeAll();
+ treeitem = new TreeItem(tree, SWT.VIRTUAL | SWT.BORDER);
+ } else {
+ treeitem = new TreeItem(parentItem, SWT.VIRTUAL | SWT.BORDER);
+ }
+ }
+ //Just display last part of instance name path
+ //String nameA[] = name.split("\\.");
+ //treeitem.setText(nameA[nameA.length-1]);
+ treeitem.setText(name);
+ treeitem.setData(target);
+
+ if (target.isPluggable()) {
+ this.setFontStyle(treeitem, SWT.ITALIC, true);
+ }
+ if (children != null) {
+ for (int i = 0; i < children.size(); i++) {
+ Target childTarget = children.get(i);
+ updateInstanceTree(childTarget, treeitem);
+ }
+ }
+ if (target == targetForConnections && busMode) {
+ this.setFontStyle(treeitem, SWT.BOLD, true);
+ if (!targetFound) {
+ tree.select(treeitem);
+ for (TreeItem childItem : treeitem.getItems()) {
+ tree.showItem(childItem);
+ }
+ targetFound = true;
+ }
+ }
+ currentPath=lastPath;
+ }
+
+ private void addConnection(Connection conn) {
+ listBusses.add(conn.getName());
+ listBusses.setData(conn.getName(), conn);
+ }
+
+ private void refreshConnections() {
+ this.source=null;
+ this.dest=null;
+ listBusses.removeAll();
+ if (cmbBusses == null) {
+ return;
+ }
+ Target busTarget = (Target) cmbBusses.getData(cmbBusses.getText());
+ if (targetForConnections == null) {
+ return;
+ }
+
+ if (busTarget == null) {
+ for (Target tmpBusTarget : targetForConnections.getBusses().keySet()) {
+ for (Connection conn : targetForConnections.getBusses().get(tmpBusTarget)) {
+ addConnection(conn);
+ }
+ }
+ } else {
+ for (Connection conn : targetForConnections.getBusses().get(busTarget)) {
+ addConnection(conn);
+ }
+ }
+ }
+
+ private void setFontStyle(TreeItem item, int style, boolean selected) {
+ if (item.isDisposed()) {
+ return;
+ }
+ FontData[] fD = item.getFont().getFontData();
+ fD[0].setStyle(selected ? style : 0);
+ Font newFont = new Font(this.getShell().getDisplay(), fD[0]);
+ item.setFont(newFont);
+ }
+
+ @Override
+ public boolean close() {
+ if (dirty) {
+ if (!MessageDialog.openConfirm(null, "Save Resource", mrwFilename
+ + "has been modified. Ignore changes?")) {
+ return false;
+ }
+ ServerWizard2.LOGGER.info("Discarding changes and exiting...");
+ }
+ clearTreeAll();
+ for (Control c : container.getChildren()) {
+ c.dispose();
+ }
+ return super.close();
+ }
+
+ private void addConnection(Boolean cabled) {
+ Target busTarget = (Target) cmbBusses.getData(cmbBusses.getText());
+ Connection conn = targetForConnections.addConnection(busTarget, source, dest, cabled);
+ this.addConnection(conn);
+ setDirtyState(true);
+ }
+
+ private void deleteConnection() {
+ if (targetForConnections == null || listBusses.getSelectionCount() == 0) {
+ return;
+ }
+ Connection conn = (Connection) listBusses.getData(listBusses.getSelection()[0]);
+ controller.deleteConnection(targetForConnections, conn.busTarget, conn);
+ this.refreshConnections();
+ setDirtyState(true);
+ }
+
+ public void setDirtyState(Boolean dirty) {
+ this.dirty = dirty;
+ if (this.btnSave != null) {
+ this.btnSave.setEnabled(dirty);
+ }
+ if (dirty) {
+ this.getShell().setText("ServerWiz2 - " + this.mrwFilename + " *");
+ } else {
+ this.getShell().setText("ServerWiz2 - " + this.mrwFilename);
+ }
+ }
+
+ public void setFilename(String filename) {
+ this.mrwFilename = filename;
+ if (btnSave != null) {
+ this.btnSave.setEnabled(true);
+ }
+ this.getShell().setText("ServerWiz2 - " + this.mrwFilename);
+ }
+
+ private void addEvents() {
+ btnShowHidden.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ refreshInstanceTree();
+ }
+ });
+ tabFolder.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ if (tabFolder.getSelection()[0]==tbtmAddBusses) {
+ initBusMode();
+ } else {
+ initInstanceMode();
+ }
+ }
+ });
+ tree.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateView();
+ }
+ });
+
+ tree.addListener(SWT.Expand, new Listener() {
+ public void handleEvent(Event e) {
+ final TreeItem treeItem = (TreeItem) e.item;
+ getShell().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ treeItem.getParent().getColumns()[0].pack();
+ }
+ });
+ }
+ });
+ btnAddTarget.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Target chk = (Target) combo.getData(combo.getText());
+ if (chk != null) {
+ TreeItem selectedItem = null;
+ Target parentTarget = null;
+ if (tree.getSelectionCount() > 0) {
+ selectedItem = tree.getSelection()[0];
+ parentTarget = (Target) selectedItem.getData();
+ }
+ if (chk.getType().equals("chip") || chk.getType().equals("targetoverride")) {
+ ServerWizard2.LOGGER.info("Entering model creation mode");
+ attributeEditor.setIgnoreReadonly();
+ controller.setModelCreationMode();
+ tbtmAddBusses.dispose();
+ }
+ String nameOverride = txtInstanceName.getText();
+ controller.addTargetInstance(chk, parentTarget, selectedItem, nameOverride);
+ txtInstanceName.setText("");
+ if (tree.getSelectionCount() > 0) {
+ selectedItem.setExpanded(true);
+ }
+ columnName.pack();
+ setDirtyState(true);
+ }
+ }
+ });
+ btnDeleteTarget.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ TreeItem treeitem = tree.getSelection()[0];
+ if (treeitem == null) {
+ return;
+ }
+ controller.deleteTarget((Target) treeitem.getData());
+ clearTree(treeitem);
+ setDirtyState(true);
+ }
+ });
+ btnCopyInstance.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ TreeItem selectedItem = tree.getSelection()[0];
+ if (selectedItem == null) {
+ return;
+ }
+ Target target = (Target) selectedItem.getData();
+ Target parentTarget = (Target) selectedItem.getParentItem().getData();
+ Target newTarget = controller.copyTargetInstance(target, parentTarget, true);
+ updateInstanceTree(newTarget, selectedItem.getParentItem());
+ TreeItem t = selectedItem.getParentItem();
+ tree.select(t.getItem(t.getItemCount() - 1));
+ setDirtyState(true);
+ }
+ });
+ btnDefaults.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ TreeItem selectedItem = tree.getSelection()[0];
+ if (selectedItem == null) {
+ return;
+ }
+ if (!MessageDialog.openConfirm(null, "Restore Defaults", "Are you sure you want to restore default attribute values on this target and all of it's children?")) {
+ return;
+ }
+ ServerWizard2.LOGGER.info("Restoring Defaults");
+ Target target = (Target) selectedItem.getData();
+ controller.deepCopyAttributes(target);
+ setDirtyState(true);
+ }
+ });
+
+ cmbCards.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Target t = (Target) cmbCards.getData(cmbCards.getText());
+ targetForConnections = t;
+ refreshInstanceTree();
+ refreshConnections();
+ }
+ });
+ cmbBusses.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ refreshInstanceTree();
+ refreshConnections();
+ }
+ });
+ btnDeleteConnection.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ deleteConnection();
+ }
+ });
+ listBusses.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ if (listBusses.getSelectionCount() > 0) {
+ Connection conn = (Connection) listBusses.getData(listBusses.getSelection()[0]);
+ refreshAttributes(conn.busTarget,null);
+ }
+ }
+ });
+ btnHideBusses.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ refreshInstanceTree();
+ refreshConnections();
+ }
+ });
+ }
+
+ private void createAttributeTable() {
+ Table table = viewer.getTable();
+
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ table.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL));
+ table.addListener(SWT.CHANGED, new Listener() {
+ public void handleEvent(Event event) {
+ setDirtyState(true);
+ }
+ });
+
+ final TableViewerColumn colName = new TableViewerColumn(viewer, SWT.NONE);
+ colName.getColumn().setWidth(256);
+ colName.getColumn().setText("Attribute");
+ colName.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ Field f = (Field) element;
+ return f.attributeName;
+ }
+ });
+
+ final TableViewerColumn colField = new TableViewerColumn(viewer, SWT.NONE);
+ colField.getColumn().setWidth(100);
+ colField.getColumn().setText("Field");
+ colField.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ Field f = (Field) element;
+ if (f.attributeName.equals(f.name)) {
+ return "";
+ }
+ return f.name;
+ }
+ });
+
+ final TableViewerColumn colValue = new TableViewerColumn(viewer, SWT.NONE);
+ colValue.getColumn().setWidth(100);
+ colValue.getColumn().setText("Value");
+ colValue.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ Field f = (Field) element;
+ return f.value;
+ }
+ });
+ attributeEditor = new AttributeEditingSupport(viewer);
+ colValue.setEditingSupport(attributeEditor);
+
+ final TableViewerColumn colDesc = new TableViewerColumn(viewer, SWT.NONE);
+ colDesc.getColumn().setWidth(350);
+ colDesc.getColumn().setText("Description");
+ colDesc.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ Field f = (Field) element;
+ return f.desc;
+ }
+ });
+
+ final TableViewerColumn colGroup = new TableViewerColumn(viewer, SWT.NONE);
+ colGroup.getColumn().setWidth(120);
+ colGroup.getColumn().setText("Group");
+ colGroup.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ Field f = (Field) element;
+ return f.group;
+ }
+ });
+
+ viewer.setContentProvider(ArrayContentProvider.getInstance());
+ attributes = new Vector<Field>();
+ viewer.setInput(attributes);
+ }
+}
OpenPOWER on IntegriCloud