Example usage for org.eclipse.jface.viewers TreeViewer TreeViewer

List of usage examples for org.eclipse.jface.viewers TreeViewer TreeViewer

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TreeViewer TreeViewer.

Prototype

public TreeViewer(Composite parent, int style) 

Source Link

Document

Creates a tree viewer on a newly-created tree control under the given parent.

Usage

From source file:com.android.hierarchyviewerlib.ui.PropertyViewer.java

License:Apache License

public PropertyViewer(Composite parent) {
    super(parent, SWT.NONE);
    setLayout(new FillLayout());
    mTreeViewer = new TreeViewer(this, SWT.NONE);

    mTree = mTreeViewer.getTree();//w w w  .java2s .c  om
    mTree.setLinesVisible(true);
    mTree.setHeaderVisible(true);

    TreeColumn propertyColumn = new TreeColumn(mTree, SWT.NONE);
    propertyColumn.setText("Property");
    TreeColumn valueColumn = new TreeColumn(mTree, SWT.NONE);
    valueColumn.setText("Value");

    mValueColumn = new TreeViewerColumn(mTreeViewer, valueColumn);
    mPropertyValueEditingSupport = new PropertyValueEditingSupport(mTreeViewer);
    mValueColumn.setEditingSupport(mPropertyValueEditingSupport);

    mModel = TreeViewModel.getModel();
    ContentProvider contentProvider = new ContentProvider();
    mTreeViewer.setContentProvider(contentProvider);
    mTreeViewer.setLabelProvider(contentProvider);
    mTreeViewer.setInput(mModel);
    mModel.addTreeChangeListener(this);

    addDisposeListener(mDisposeListener);

    @SuppressWarnings("unused")
    TreeColumnResizer resizer = new TreeColumnResizer(this, propertyColumn, valueColumn);

    addControlListener(mControlListener);

    ImageLoader imageLoader = ImageLoader.getLoader(HierarchyViewerDirector.class);
    mImage = imageLoader.loadImage("picker.png", Display.getDefault()); //$NON-NLS-1$

    treeChanged();
}

From source file:com.android.ide.eclipse.adt.internal.lint.LintList.java

License:Open Source License

LintList(IWorkbenchPartSite site, Composite parent, IMemento memento, boolean singleFile) {
    super(parent, SWT.NONE);
    mSingleFile = singleFile;/*  w ww  . jav a  2  s  . c om*/
    mMemento = memento;
    mSite = site;
    mRegistry = EclipseLintClient.getRegistry();

    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginWidth = 0;
    gridLayout.marginHeight = 0;
    setLayout(gridLayout);

    mTreeViewer = new TreeViewer(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
    mTree = mTreeViewer.getTree();
    mTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    createColumns();
    mTreeViewer.setComparator(new TableComparator());
    setSortIndicators();

    mContentProvider = new ContentProvider();
    mTreeViewer.setContentProvider(mContentProvider);

    mTree.setLinesVisible(true);
    mTree.setHeaderVisible(true);
    mTree.addControlListener(this);

    ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE
            | IResourceChangeEvent.PRE_BUILD | IResourceChangeEvent.POST_BUILD);

    // Workaround for https://bugs.eclipse.org/341865
    mTree.addPaintListener(new PaintListener() {
        @Override
        public void paintControl(PaintEvent e) {
            mTreePainted = true;
            mTreeViewer.getTree().removePaintListener(this);
        }
    });

    // Remember the most recently selected id category such that we can
    // attempt to reselect it after a refresh
    mTree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            List<IMarker> markers = getSelectedMarkers();
            if (markers.size() > 0) {
                mSelectedId = EclipseLintClient.getId(markers.get(0));
            }
        }
    });
    mTree.addTreeListener(new TreeListener() {
        @Override
        public void treeExpanded(TreeEvent e) {
            Object data = e.item.getData();
            if (data instanceof IMarker) {
                String id = EclipseLintClient.getId((IMarker) data);
                if (id != null) {
                    if (mExpandedIds == null) {
                        mExpandedIds = new HashSet<String>();
                    }
                    mExpandedIds.add(id);
                }
            }
        }

        @Override
        public void treeCollapsed(TreeEvent e) {
            if (mExpandedIds != null) {
                Object data = e.item.getData();
                if (data instanceof IMarker) {
                    String id = EclipseLintClient.getId((IMarker) data);
                    if (id != null) {
                        mExpandedIds.remove(id);
                    }
                }
            }
        }
    });
}

From source file:com.android.ide.eclipse.adt.internal.preferences.LintPreferencePage.java

License:Open Source License

@Override
public Control createContents(Composite parent) {
    IAdaptable resource = getElement();//from  ww  w  . j av  a 2  s  .  c  o  m
    if (resource != null) {
        mProject = (IProject) resource.getAdapter(IProject.class);
    }

    Composite container = new Composite(parent, SWT.NULL);
    container.setLayout(new GridLayout(2, false));

    if (mProject != null) {
        Label projectLabel = new Label(container, SWT.CHECK);
        projectLabel.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, false, false, 1, 1));
        projectLabel.setText("Project-specific configuration:");

        mWorkspaceLink = new Link(container, SWT.NONE);
        mWorkspaceLink.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
        mWorkspaceLink.setText("<a>Configure Workspace Settings...</a>");
        mWorkspaceLink.addSelectionListener(this);
    } else {
        mCheckFileCheckbox = new Button(container, SWT.CHECK);
        mCheckFileCheckbox.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
        mCheckFileCheckbox.setSelection(true);
        mCheckFileCheckbox.setText("When saving files, check for errors");

        mCheckExportCheckbox = new Button(container, SWT.CHECK);
        mCheckExportCheckbox.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
        mCheckExportCheckbox.setSelection(true);
        mCheckExportCheckbox
                .setText("Run full error check when exporting app and abort if fatal errors are found");

        Label separator = new Label(container, SWT.SEPARATOR | SWT.HORIZONTAL);
        separator.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));

        Label checkListLabel = new Label(container, SWT.NONE);
        checkListLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
        checkListLabel.setText("Issues:");
    }

    mRegistry = EclipseLintClient.getRegistry();
    mClient = new EclipseLintClient(mRegistry, mProject != null ? Collections.singletonList(mProject) : null,
            null, false);
    Project project = null;
    if (mProject != null) {
        File dir = AdtUtils.getAbsolutePath(mProject).toFile();
        project = mClient.getProject(dir, dir);
    }
    mConfiguration = mClient.getConfigurationFor(project);

    mSearch = new Text(container, SWT.SEARCH | SWT.ICON_CANCEL | SWT.ICON_SEARCH);
    mSearch.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
    mSearch.addSelectionListener(this);
    mSearch.addModifyListener(this);
    // Grab the Enter key such that pressing return in the search box filters (instead
    // of closing the options dialog)
    mSearch.setMessage("type filter text (use ~ to filter by severity, e.g. ~ignore)");
    mSearch.addTraverseListener(new TraverseListener() {
        @Override
        public void keyTraversed(TraverseEvent e) {
            if (e.keyCode == SWT.CR) {
                updateFilter();
                e.doit = false;
            } else if (e.keyCode == SWT.ARROW_DOWN) {
                // Allow moving from the search into the table
                if (mTree.getItemCount() > 0) {
                    TreeItem firstCategory = mTree.getItem(0);
                    if (firstCategory.getItemCount() > 0) {
                        TreeItem first = firstCategory.getItem(0);
                        mTree.setFocus();
                        mTree.select(first);
                    }
                }
            }
        }
    });

    mTreeViewer = new TreeViewer(container, SWT.BORDER | SWT.FULL_SELECTION);
    mTree = mTreeViewer.getTree();
    GridData gdTable = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
    gdTable.widthHint = 500;
    gdTable.heightHint = 160;
    mTree.setLayoutData(gdTable);
    mTree.setLinesVisible(true);
    mTree.setHeaderVisible(true);

    TreeViewerColumn column1 = new TreeViewerColumn(mTreeViewer, SWT.NONE);
    mIdColumn = column1.getColumn();
    mIdColumn.setWidth(100);
    mIdColumn.setText("Id");

    TreeViewerColumn column2 = new TreeViewerColumn(mTreeViewer, SWT.FILL);
    mNameColumn = column2.getColumn();
    mNameColumn.setWidth(100);
    mNameColumn.setText("Name");

    mTreeViewer.setContentProvider(new ContentProvider());
    mTreeViewer.setLabelProvider(new LabelProvider());

    mDetailsText = new Text(container, SWT.BORDER | SWT.READ_ONLY | SWT.WRAP | SWT.V_SCROLL | SWT.MULTI);
    GridData gdText = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 2);
    gdText.heightHint = 80;
    mDetailsText.setLayoutData(gdText);

    Label severityLabel = new Label(container, SWT.NONE);
    severityLabel.setText("Severity:");

    mSeverityCombo = new Combo(container, SWT.READ_ONLY);
    mSeverityCombo.setItems(new String[] { "(Default)", "Fatal", "Error", "Warning", "Information", "Ignore" });
    GridData gdSeverityCombo = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
    gdSeverityCombo.widthHint = 90;
    mSeverityCombo.setLayoutData(gdSeverityCombo);
    mSeverityCombo.setText("");
    mSeverityCombo.addSelectionListener(this);

    List<Issue> issues = mRegistry.getIssues();
    for (Issue issue : issues) {
        Severity severity = mConfiguration.getSeverity(issue);
        mSeverities.put(issue, severity);
    }
    mInitialSeverities = new HashMap<Issue, Severity>(mSeverities);

    mTreeViewer.setInput(mRegistry);

    mTree.addSelectionListener(this);
    // Add a listener to resize the column to the full width of the table
    mTree.addControlListener(this);

    loadSettings(false);

    mTreeViewer.expandAll();

    return container;
}

From source file:com.android.ide.eclipse.auidt.internal.lint.LintList.java

License:Open Source License

LintList(IWorkbenchPartSite site, Composite parent, IMemento memento, boolean singleFile) {
    super(parent, SWT.NONE);
    mSingleFile = singleFile;/* w  w  w  . j  av a 2 s .  c  o  m*/
    mMemento = memento;
    mSite = site;
    mRegistry = EclipseLintClient.getRegistry();

    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginWidth = 0;
    gridLayout.marginHeight = 0;
    setLayout(gridLayout);

    mTreeViewer = new TreeViewer(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
    mTree = mTreeViewer.getTree();
    mTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    createColumns();
    mTreeViewer.setComparator(new TableComparator());
    setSortIndicators();

    mContentProvider = new ContentProvider();
    mTreeViewer.setContentProvider(mContentProvider);

    mTree.setLinesVisible(true);
    mTree.setHeaderVisible(true);
    mTree.addControlListener(this);

    ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE
            | IResourceChangeEvent.PRE_BUILD | IResourceChangeEvent.POST_BUILD);

    // Workaround for https://bugs.eclipse.org/341865
    mTree.addPaintListener(new PaintListener() {
        @Override
        public void paintControl(PaintEvent e) {
            treePainted = true;
            mTreeViewer.getTree().removePaintListener(this);
        }
    });

    // Remember the most recently selected id category such that we can
    // attempt to reselect it after a refresh
    mTree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            List<IMarker> markers = getSelectedMarkers();
            if (markers.size() > 0) {
                mSelectedId = EclipseLintClient.getId(markers.get(0));
            }
        }
    });
    mTree.addTreeListener(new TreeListener() {
        @Override
        public void treeExpanded(TreeEvent e) {
            Object data = e.item.getData();
            if (data instanceof IMarker) {
                String id = EclipseLintClient.getId((IMarker) data);
                if (id != null) {
                    if (mExpandedIds == null) {
                        mExpandedIds = new HashSet<String>();
                    }
                    mExpandedIds.add(id);
                }
            }
        }

        @Override
        public void treeCollapsed(TreeEvent e) {
            if (mExpandedIds != null) {
                Object data = e.item.getData();
                if (data instanceof IMarker) {
                    String id = EclipseLintClient.getId((IMarker) data);
                    if (id != null) {
                        mExpandedIds.remove(id);
                    }
                }
            }
        }
    });
}

From source file:com.android.sdkuilib.internal.repository.SdkUpdaterChooserDialog.java

License:Apache License

/**
 * Create the main content of the dialog.
 * See also {@link #createButtonBar(Composite)} below.
 *///from ww w .  j a va2  s  .  c om
@Override
public void createDialogContent(Composite parent) {
    // Sash form
    mSashForm = new SashForm(parent, SWT.NONE);
    mSashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));

    // Left part of Sash Form

    mTableGroup = new Group(mSashForm, SWT.NONE);
    mTableGroup.setText("Packages");
    mTableGroup.setLayout(new GridLayout(1, false/*makeColumnsEqual*/));

    mTreeViewPackage = new TreeViewer(mTableGroup, SWT.BORDER | SWT.V_SCROLL | SWT.SINGLE);
    mTreePackage = mTreeViewPackage.getTree();
    mTreePackage.setHeaderVisible(false);
    mTreePackage.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    mTreePackage.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onPackageSelected(); //$hide$
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            onPackageDoubleClick();
        }
    });

    mTreeColum = new TreeColumn(mTreePackage, SWT.NONE);
    mTreeColum.setWidth(100);
    mTreeColum.setText("Packages");

    // Right part of Sash form

    mPackageRootComposite = new Composite(mSashForm, SWT.NONE);
    mPackageRootComposite.setLayout(new GridLayout(4, false/*makeColumnsEqual*/));
    mPackageRootComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    mPackageTextGroup = new Group(mPackageRootComposite, SWT.NONE);
    mPackageTextGroup.setText("Package Description && License");
    mPackageTextGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));
    mPackageTextGroup.setLayout(new GridLayout(1, false/*makeColumnsEqual*/));

    mPackageText = new StyledText(mPackageTextGroup, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP | SWT.V_SCROLL);
    mPackageText.setBackground(getParentShell().getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
    mPackageText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    mLicenseRadioAccept = new Button(mPackageRootComposite, SWT.RADIO);
    mLicenseRadioAccept.setText("Accept");
    mLicenseRadioAccept.setToolTipText("Accept this package.");
    mLicenseRadioAccept.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onLicenseRadioSelected();
        }
    });

    mLicenseRadioReject = new Button(mPackageRootComposite, SWT.RADIO);
    mLicenseRadioReject.setText("Reject");
    mLicenseRadioReject.setToolTipText("Reject this package.");
    mLicenseRadioReject.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onLicenseRadioSelected();
        }
    });

    Link link = new Link(mPackageRootComposite, SWT.NONE);
    link.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1));
    final String printAction = "Print"; // extracted for NLS, to compare with below.
    link.setText(String.format("<a>Copy to clipboard</a> | <a>%1$s</a>", printAction));
    link.setToolTipText("Copies all text and license to clipboard | Print using system defaults.");
    link.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            if (printAction.equals(e.text)) {
                mPackageText.print();
            } else {
                Point p = mPackageText.getSelection();
                mPackageText.selectAll();
                mPackageText.copy();
                mPackageText.setSelection(p);
            }
        }
    });

    mLicenseRadioAcceptLicense = new Button(mPackageRootComposite, SWT.RADIO);
    mLicenseRadioAcceptLicense.setText("Accept License");
    mLicenseRadioAcceptLicense.setToolTipText("Accept all packages that use the same license.");
    mLicenseRadioAcceptLicense.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            onLicenseRadioSelected();
        }
    });

    mSashForm.setWeights(new int[] { 200, 300 });
}

From source file:com.android.traceview.ProfileView.java

License:Apache License

public ProfileView(Composite parent, TraceReader reader, SelectionController selectController) {
    super(parent, SWT.NONE);
    setLayout(new GridLayout(1, false));
    this.mSelectionController = selectController;
    mSelectionController.addObserver(this);

    // Add a tree viewer at the top
    mTreeViewer = new TreeViewer(this, SWT.MULTI | SWT.NONE);
    mTreeViewer.setUseHashlookup(true);/*from w  w  w .  j a  v a 2 s.  c  o m*/
    mProfileProvider = reader.getProfileProvider();
    mProfileProvider.setTreeViewer(mTreeViewer);
    SelectionAdapter listener = mProfileProvider.getColumnListener();
    final Tree tree = mTreeViewer.getTree();
    tree.setHeaderVisible(true);
    tree.setLayoutData(new GridData(GridData.FILL_BOTH));

    // Get the column names from the ProfileProvider
    String[] columnNames = mProfileProvider.getColumnNames();
    int[] columnWidths = mProfileProvider.getColumnWidths();
    int[] columnAlignments = mProfileProvider.getColumnAlignments();
    for (int ii = 0; ii < columnWidths.length; ++ii) {
        TreeColumn column = new TreeColumn(tree, SWT.LEFT);
        column.setText(columnNames[ii]);
        column.setWidth(columnWidths[ii]);
        column.setMoveable(true);
        column.addSelectionListener(listener);
        column.setAlignment(columnAlignments[ii]);
    }

    // Add a listener to the tree so that we can make the row
    // height smaller.
    tree.addListener(SWT.MeasureItem, new Listener() {
        @Override
        public void handleEvent(Event event) {
            int fontHeight = event.gc.getFontMetrics().getHeight();
            event.height = fontHeight;
        }
    });

    mTreeViewer.setContentProvider(mProfileProvider);
    mTreeViewer.setLabelProvider(mProfileProvider.getLabelProvider());
    mTreeViewer.setInput(mProfileProvider.getRoot());

    // Create another composite to hold the label and text box
    Composite composite = new Composite(this, SWT.NONE);
    composite.setLayout(new GridLayout(2, false));
    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    // Add a label for the search box
    Label label = new Label(composite, SWT.NONE);
    label.setText("Find:");

    // Add a text box for searching for method names
    mSearchBox = new Text(composite, SWT.BORDER);
    mSearchBox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Display display = getDisplay();
    mColorNoMatch = new Color(display, 255, 200, 200);
    mColorMatch = mSearchBox.getBackground();

    mSearchBox.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent ev) {
            String query = mSearchBox.getText();
            if (query.length() == 0)
                return;
            findName(query);
        }
    });

    // Add a key listener to the text box so that we can clear
    // the text box if the user presses <ESC>.
    mSearchBox.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent event) {
            if (event.keyCode == SWT.ESC) {
                mSearchBox.setText("");
            } else if (event.keyCode == SWT.CR) {
                String query = mSearchBox.getText();
                if (query.length() == 0)
                    return;
                findNextName(query);
            }
        }
    });

    // Also add a key listener to the tree viewer so that the
    // user can just start typing anywhere in the tree view.
    tree.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent event) {
            if (event.keyCode == SWT.ESC) {
                mSearchBox.setText("");
            } else if (event.keyCode == SWT.BS) {
                // Erase the last character from the search box
                String text = mSearchBox.getText();
                int len = text.length();
                String chopped;
                if (len <= 1)
                    chopped = "";
                else
                    chopped = text.substring(0, len - 1);
                mSearchBox.setText(chopped);
            } else if (event.keyCode == SWT.CR) {
                String query = mSearchBox.getText();
                if (query.length() == 0)
                    return;
                findNextName(query);
            } else {
                // Append the given character to the search box
                String str = String.valueOf(event.character);
                mSearchBox.append(str);
            }
            event.doit = false;
        }
    });

    // Add a selection listener to the tree so that the user can click
    // on a method that is a child or parent and jump to that method.
    mTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent ev) {
            ISelection sel = ev.getSelection();
            if (sel.isEmpty())
                return;
            if (sel instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) sel;
                Object element = selection.getFirstElement();
                if (element == null)
                    return;
                if (element instanceof MethodData) {
                    MethodData md = (MethodData) element;
                    highlightMethod(md, true);
                }
                if (element instanceof ProfileData) {
                    MethodData md = ((ProfileData) element).getMethodData();
                    highlightMethod(md, true);
                }
            }
        }
    });

    // Add a tree listener so that we can expand the parents and children
    // of a method when a method is expanded.
    mTreeViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            Object element = event.getElement();
            if (element instanceof MethodData) {
                MethodData md = (MethodData) element;
                expandNode(md);
            }
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
        }
    });

    tree.addListener(SWT.MouseDown, new Listener() {
        @Override
        public void handleEvent(Event event) {
            Point point = new Point(event.x, event.y);
            TreeItem treeItem = tree.getItem(point);
            MethodData md = mProfileProvider.findMatchingTreeItem(treeItem);
            if (md == null)
                return;
            ArrayList<Selection> selections = new ArrayList<Selection>();
            selections.add(Selection.highlight("MethodData", md));
            mSelectionController.change(selections, "ProfileView");

            if (mMethodHandler != null && (event.stateMask & SWT.MOD1) != 0) {
                mMethodHandler.handleMethod(md);
            }
        }
    });
}

From source file:com.android.uiautomator.UiAutomatorView.java

License:Apache License

public UiAutomatorView(Composite parent, int style) {
    super(parent, SWT.NONE);
    setLayout(new FillLayout());

    SashForm baseSash = new SashForm(this, SWT.HORIZONTAL);

    mOrginialCursor = getShell().getCursor();
    mCrossCursor = new Cursor(getDisplay(), SWT.CURSOR_CROSS);
    mScreenshotComposite = new Composite(baseSash, SWT.BORDER);
    mStackLayout = new StackLayout();
    mScreenshotComposite.setLayout(mStackLayout);
    // draw the canvas with border, so the divider area for sash form can be highlighted
    mScreenshotCanvas = new Canvas(mScreenshotComposite, SWT.BORDER);
    mStackLayout.topControl = mScreenshotCanvas;
    mScreenshotComposite.layout();/*from   w ww  .j  a va  2s.c  om*/

    // set cursor when enter canvas
    mScreenshotCanvas.addListener(SWT.MouseEnter, new Listener() {
        @Override
        public void handleEvent(Event arg0) {
            getShell().setCursor(mCrossCursor);
        }
    });
    mScreenshotCanvas.addListener(SWT.MouseExit, new Listener() {
        @Override
        public void handleEvent(Event arg0) {
            getShell().setCursor(mOrginialCursor);
        }
    });

    mScreenshotCanvas.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            if (mModel != null) {
                mModel.toggleExploreMode();
                redrawScreenshot();
            }
            if (e.button == 3) {
                //set menus
                Menu menu = new Menu(mScreenshotCanvas);
                mScreenshotCanvas.setMenu(menu);

                Menu menu1 = new Menu(menu);
                Menu menu2 = new Menu(menu);
                Menu menu3 = new Menu(menu);
                Menu menu4 = new Menu(menu);
                Menu menu5 = new Menu(menu);
                Menu menu6 = new Menu(menu);
                Menu menu7 = new Menu(menu);
                Menu menu8 = new Menu(menu);
                Menu menu9 = new Menu(menu);

                //set items
                MenuItem item1 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item2 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item3 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item4 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item5 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item6 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item7 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item8 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item9 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item43 = new MenuItem(menu, SWT.CASCADE);
                MenuItem item10 = new MenuItem(menu1, SWT.NONE);
                MenuItem item11 = new MenuItem(menu1, SWT.NONE);
                MenuItem item12 = new MenuItem(menu1, SWT.NONE);
                MenuItem item13 = new MenuItem(menu1, SWT.NONE);
                MenuItem item14 = new MenuItem(menu1, SWT.NONE);
                MenuItem item15 = new MenuItem(menu2, SWT.NONE);
                MenuItem item16 = new MenuItem(menu2, SWT.NONE);
                MenuItem item17 = new MenuItem(menu2, SWT.NONE);
                MenuItem item18 = new MenuItem(menu2, SWT.NONE);
                MenuItem item19 = new MenuItem(menu2, SWT.NONE);
                MenuItem item20 = new MenuItem(menu3, SWT.NONE);
                MenuItem item21 = new MenuItem(menu3, SWT.NONE);
                MenuItem item22 = new MenuItem(menu3, SWT.NONE);
                MenuItem item23 = new MenuItem(menu3, SWT.NONE);
                MenuItem item24 = new MenuItem(menu3, SWT.NONE);
                MenuItem item25 = new MenuItem(menu4, SWT.NONE);
                MenuItem item26 = new MenuItem(menu4, SWT.NONE);
                MenuItem item27 = new MenuItem(menu4, SWT.NONE);
                MenuItem item28 = new MenuItem(menu4, SWT.NONE);
                MenuItem item29 = new MenuItem(menu4, SWT.NONE);
                MenuItem item30 = new MenuItem(menu6, SWT.NONE);
                MenuItem item31 = new MenuItem(menu6, SWT.NONE);
                MenuItem item32 = new MenuItem(menu6, SWT.NONE);
                MenuItem item33 = new MenuItem(menu5, SWT.NONE);
                MenuItem item34 = new MenuItem(menu5, SWT.NONE);
                MenuItem item35 = new MenuItem(menu5, SWT.NONE);
                MenuItem item36 = new MenuItem(menu5, SWT.NONE);
                MenuItem item37 = new MenuItem(menu5, SWT.NONE);
                MenuItem item38 = new MenuItem(menu8, SWT.NONE);
                MenuItem item39 = new MenuItem(menu8, SWT.NONE);
                MenuItem item40 = new MenuItem(menu8, SWT.NONE);
                MenuItem item41 = new MenuItem(menu8, SWT.NONE);
                MenuItem item42 = new MenuItem(menu8, SWT.NONE);
                MenuItem item44 = new MenuItem(menu6, SWT.NONE);
                //set item text
                item1.setText("Click");
                item2.setText("Click(Refresh)");
                item3.setText("longClick");
                item4.setText("longClick(Refresh)");
                item5.setText("editText");
                item6.setText("SystemCommand");
                item7.setText("SystemCommand(Refresh)");
                item43.setText("Sleep");
                item8.setText("Check");
                item9.setText("Find");
                item10.setText("id");
                item11.setText("text");
                item12.setText("desc");
                item13.setText("class");
                item14.setText("xpath");
                item15.setText("id");
                item16.setText("text");
                item17.setText("desc");
                item18.setText("class");
                item19.setText("xpath");
                item20.setText("id");
                item21.setText("text");
                item22.setText("desc");
                item23.setText("class");
                item24.setText("xpath");
                item25.setText("id");
                item26.setText("text");
                item27.setText("desc");
                item28.setText("class");
                item29.setText("xpath");
                item30.setText("Home");
                item31.setText("Back");
                item32.setText("Power");
                item33.setText("id");
                item34.setText("text");
                item35.setText("desc");
                item36.setText("class");
                item37.setText("xpath");
                item38.setText("id");
                item39.setText("text");
                item40.setText("desc");
                item41.setText("class");
                item42.setText("xpath");
                item44.setText("Other");
                //bind menu
                item1.setMenu(menu1);
                //item2.setMenu(menu2);
                item3.setMenu(menu3);
                //item4.setMenu(menu4);
                item5.setMenu(menu5);
                item6.setMenu(menu6);
                //item7.setMenu(menu7);
                item8.setMenu(menu8);
                //item9.setMenu(menu9);                           

                //add item listener
                //click item10-14
                item10.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item10.getText(), item1.getText());
                        chargeText(script);
                        //scriptTextarea.setText(script);                        
                    }
                });

                item11.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item11.getText(), item1.getText());
                        chargeText(script);

                    }
                });
                item12.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item12.getText(), item1.getText());
                        chargeText(script);
                    }
                });
                item13.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item13.getText(), item1.getText());
                        chargeText(script);
                    }
                });
                item14.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item14.getText(), item1.getText());
                        chargeText(script);
                    }
                });

                //click(refresh) item15-19

                item2.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        objectClick(item2.getText(), "");
                        UiAutomatorViewer window = UiAutomatorViewer.getInstance();
                        ScreenshotAction screenshot = new ScreenshotAction(window, false);
                        screenshot.run();
                    }
                });

                //longclick item20-24
                item20.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item20.getText(), item3.getText());
                        chargeText(script);
                    }
                });
                item21.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item21.getText(), item3.getText());
                        chargeText(script);
                    }
                });
                item22.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item22.getText(), item3.getText());
                        chargeText(script);
                    }
                });
                item23.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item23.getText(), item3.getText());
                        chargeText(script);
                    }
                });
                item24.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByAction(item24.getText(), item3.getText());
                        chargeText(script);
                    }
                });

                //longclick(refresh)
                item4.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        objectClick(item4.getText(), "");
                        UiAutomatorViewer window = UiAutomatorViewer.getInstance();
                        ScreenshotAction screenshot = new ScreenshotAction(window, false);
                        screenshot.run();
                    }

                });

                //edittext item33-37
                item33.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        InputDialog dialog = new InputDialog(getShell(), "please input id", "please input",
                                null, null);
                        if (dialog.open() == InputDialog.OK) {
                            String script = getScriptByValue(item33.getText(), dialog.getValue());
                            chargeText(script);
                        }
                    }
                });
                item34.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        InputDialog dialog = new InputDialog(getShell(), "please input text", "please input",
                                null, null);
                        if (dialog.open() == InputDialog.OK) {
                            String script = getScriptByValue(item34.getText(), dialog.getValue());
                            chargeText(script);
                        }
                    }
                });
                item35.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        InputDialog dialog = new InputDialog(getShell(), "please input desc", "please input",
                                null, null);
                        if (dialog.open() == InputDialog.OK) {
                            String script = getScriptByValue(item35.getText(), dialog.getValue());
                            chargeText(script);
                        }
                    }
                });
                item36.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        InputDialog dialog = new InputDialog(getShell(), "please input class", "please input",
                                null, null);
                        if (dialog.open() == InputDialog.OK) {
                            String script = getScriptByValue(item36.getText(), dialog.getValue());
                            chargeText(script);
                        }
                    }
                });
                item37.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        InputDialog dialog = new InputDialog(getShell(), "please input xpath", "please input",
                                null, null);
                        if (dialog.open() == InputDialog.OK) {
                            String script = getScriptByValue(item37.getText(), dialog.getValue());
                            chargeText(script);
                        }
                    }
                });
                //systemcommand
                item30.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByCommand(item30.getText(), "3");
                        chargeText(script);
                    }
                });
                item31.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByCommand(item31.getText(), "4");
                        chargeText(script);
                    }
                });
                item32.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        String script = getScriptByCommand(item32.getText(), "26");
                        chargeText(script);
                    }
                });
                item44.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        InputDialog dialog = new InputDialog(getShell(), "please input text", "please input",
                                null, null);
                        if (dialog.open() == InputDialog.OK && dialog.getValue() != "") {
                            String script = getScriptByCommand(item44.getText(), dialog.getValue());
                            chargeText(script);
                        } else {
                            //MessageDialog mdialog=new MessageDialog(getShell(), null, null, "please enter text", MessageDialog.WARNING, null, MessageDialog.WARNING);
                            //mdialog.open();
                            dialog.open();
                        }
                    }
                });

                //systemcommand(refresh)
                item7.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        InputDialog dialog = new InputDialog(getShell(), "please input keyevent",
                                "please input", null, null);
                        if (dialog.open() == InputDialog.OK) {
                            objectClick(item7.getText(), dialog.getValue());
                            UiAutomatorViewer window = UiAutomatorViewer.getInstance();
                            ScreenshotAction screenshot = new ScreenshotAction(window, false);
                            screenshot.run();
                        }
                    }
                });
            }
        }

        private String getRes(String res) {
            String Res = ((UiNode) mModel.getSelectedNode()).getAttribute(res);
            return Res;

        }

        private String getScriptByAction(String id, String ac) {
            // TODO Auto-generated methoad stub
            String script = "driver";
            String res = "";
            switch (id) {
            case "id":
                res = getRes("resource-id");
                script += ".findElementById(\"" + res + "\").";
                script += chargeAction(ac);
                break;
            case "text":
                res = getRes("text");
                script += ".findElementByText(\"" + res + "\").";
                script += chargeAction(ac);
                break;
            case "class":
                res = getRes("class");
                script += ".findElementByClassName(\"" + res + "\").";
                script += chargeAction(ac);
                break;
            case "desc":
                res = getRes("content-desc");
                script += ".findElementByContent(\"" + res + "\").";
                script += chargeAction(ac);
                break;
            case "xpath":
                res = getRes("xpath");
                script += ".findElementByXpath(\"" + res + "\").";
                script += chargeAction(ac);
                break;
            }
            return script;
        }

        private String getScriptByCommand(String id, String value) {
            String script = "driver";
            switch (id) {
            case "Home":
                script += ".sendKeys(\"" + value + "\")";
                break;
            case "Back":
                script += ".sendKeys(\"" + value + "\")";
                break;
            case "Power":
                script += ".sendKeys(\"" + value + "\")";
                break;
            case "Other":
                script += ".sendKeys(\"" + value + "\")";
                break;
            }
            return script;
        }

        private String getScriptByValue(String id, String value) {
            // TODO Auto-generated method stub
            String script = "driver";
            String res = "";
            switch (id) {
            case "id":
                res = getRes("resource-id");
                script += ".findElementById(\"" + res + "\").sendKeys(\"" + value + "\")";
                break;
            case "text":
                res = getRes("text");
                script += ".findElementByText(\"" + res + "\").sendKeys(\"" + value + "\")";
                break;
            case "class":
                res = getRes("class");
                script += ".findElementByClassName(\"" + res + "\").sendKeys(\"" + value + "\")";
                break;
            case "desc":
                res = getRes("content-desc");
                script += ".findElementByContent(\"" + res + "\").sendKeys(\"" + value + "\")";
                break;
            case "xpath":
                res = getRes("xpath");
                script += ".findElementByXpath(\"" + res + "\").sendKeys(\"" + value + "\")";
                break;
            }
            return script;
        }

        private String chargeAction(String ac) {
            String ca = "";
            switch (ac) {
            case "Click":
                ca = "click();";
                break;
            case "longClick":
                ca = "longclick();";
                break;
            }
            return ca;
        }

        private void chargeText(String res) {
            if (scriptTextarea.getText().isEmpty()) {
                scriptTextarea.append(res);
            } else {
                scriptTextarea.append(System.getProperty("line.separator") + res);
            }
        }

        private void objectClick(String ac, String value) {
            Rectangle rect = mModel.getCurrentDrawingRect();
            String adbStr = "";
            switch (ac) {
            case "Click(Refresh)":
                adbStr = "adb shell input tap " + (rect.x + rect.width / 2) + " " + (rect.y + rect.height / 2);
                break;
            case "LongClick(Refresh)":
                adbStr = "adb shell input tap " + (rect.x + rect.width / 2) + " " + (rect.y + rect.height / 2);
                break;
            case "SystemCommand(Refresh)":
                adbStr = "adb shell input keyevent " + value + "";
                break;
            }
            try {
                System.out.println(adbStr);
                Runtime.getRuntime().exec(adbStr);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    });
    mScreenshotCanvas.setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
    mScreenshotCanvas.addPaintListener(new PaintListener() {
        @Override
        public void paintControl(PaintEvent e) {
            if (mScreenshot != null) {
                updateScreenshotTransformation();
                // shifting the image here, so that there's a border around screen shot
                // this makes highlighting red rectangles on the screen shot edges more visible
                Transform t = new Transform(e.gc.getDevice());
                t.translate(mDx, mDy);
                t.scale(mScale, mScale);
                e.gc.setTransform(t);
                e.gc.drawImage(mScreenshot, 0, 0);
                // this resets the transformation to identity transform, i.e. no change
                // we don't use transformation here because it will cause the line pattern
                // and line width of highlight rect to be scaled, causing to appear to be blurry
                e.gc.setTransform(null);
                if (mModel.shouldShowNafNodes()) {
                    // highlight the "Not Accessibility Friendly" nodes
                    e.gc.setForeground(e.gc.getDevice().getSystemColor(SWT.COLOR_YELLOW));
                    e.gc.setBackground(e.gc.getDevice().getSystemColor(SWT.COLOR_YELLOW));
                    for (Rectangle r : mModel.getNafNodes()) {
                        e.gc.setAlpha(50);
                        e.gc.fillRectangle(mDx + getScaledSize(r.x), mDy + getScaledSize(r.y),
                                getScaledSize(r.width), getScaledSize(r.height));
                        e.gc.setAlpha(255);
                        e.gc.setLineStyle(SWT.LINE_SOLID);
                        e.gc.setLineWidth(2);
                        e.gc.drawRectangle(mDx + getScaledSize(r.x), mDy + getScaledSize(r.y),
                                getScaledSize(r.width), getScaledSize(r.height));
                    }
                }

                // draw the search result rects
                if (mSearchResult != null) {
                    for (BasicTreeNode result : mSearchResult) {
                        if (result instanceof UiNode) {
                            UiNode uiNode = (UiNode) result;
                            Rectangle rect = new Rectangle(uiNode.x, uiNode.y, uiNode.width, uiNode.height);
                            e.gc.setForeground(e.gc.getDevice().getSystemColor(SWT.COLOR_YELLOW));
                            e.gc.setLineStyle(SWT.LINE_DASH);
                            e.gc.setLineWidth(1);
                            e.gc.drawRectangle(mDx + getScaledSize(rect.x), mDy + getScaledSize(rect.y),
                                    getScaledSize(rect.width), getScaledSize(rect.height));
                        }
                    }
                }

                // draw the mouseover rects
                Rectangle rect = mModel.getCurrentDrawingRect();
                if (rect != null) {
                    e.gc.setForeground(e.gc.getDevice().getSystemColor(SWT.COLOR_RED));
                    if (mModel.isExploreMode()) {
                        // when we highlight nodes dynamically on mouse move,
                        // use dashed borders
                        e.gc.setLineStyle(SWT.LINE_DASH);
                        e.gc.setLineWidth(1);
                    } else {
                        // when highlighting nodes on tree node selection,
                        // use solid borders
                        e.gc.setLineStyle(SWT.LINE_SOLID);
                        e.gc.setLineWidth(2);
                    }
                    e.gc.drawRectangle(mDx + getScaledSize(rect.x), mDy + getScaledSize(rect.y),
                            getScaledSize(rect.width), getScaledSize(rect.height));
                }
            }
        }
    });
    mScreenshotCanvas.addMouseMoveListener(new MouseMoveListener() {
        @Override
        public void mouseMove(MouseEvent e) {
            if (mModel != null) {
                int x = getInverseScaledSize(e.x - mDx);
                int y = getInverseScaledSize(e.y - mDy);
                // show coordinate
                coordinateLabel.setText(String.format("(%d,%d)", x, y));
                if (mModel.isExploreMode()) {
                    BasicTreeNode node = mModel.updateSelectionForCoordinates(x, y);
                    if (node != null) {
                        updateTreeSelection(node);
                    }
                }
            }
        }
    });

    mSetScreenshotComposite = new Composite(mScreenshotComposite, SWT.NONE);
    mSetScreenshotComposite.setLayout(new GridLayout());

    final Button setScreenshotButton = new Button(mSetScreenshotComposite, SWT.PUSH);
    setScreenshotButton.setText("Specify Screenshot...");
    setScreenshotButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent arg0) {
            FileDialog fd = new FileDialog(setScreenshotButton.getShell());
            fd.setFilterExtensions(new String[] { "*.png" });
            if (mModelFile != null) {
                fd.setFilterPath(mModelFile.getParent());
            }
            String screenshotPath = fd.open();
            if (screenshotPath == null) {
                return;
            }

            ImageData[] data;
            try {
                data = new ImageLoader().load(screenshotPath);
            } catch (Exception e) {
                return;
            }

            // "data" is an array, probably used to handle images that has multiple frames
            // i.e. gifs or icons, we just care if it has at least one here
            if (data.length < 1) {
                return;
            }

            mScreenshot = new Image(Display.getDefault(), data[0]);
            redrawScreenshot();
        }
    });

    // right sash is split into 2 parts: upper-right and lower-right
    // both are composites with borders, so that the horizontal divider can be highlighted by
    // the borders
    SashForm rightSash = new SashForm(baseSash, SWT.VERTICAL);

    // upper-right base contains the toolbar and the tree
    Composite upperRightBase = new Composite(rightSash, SWT.BORDER);
    upperRightBase.setLayout(new GridLayout(1, false));

    ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
    toolBarManager.add(new ExpandAllAction(this));
    toolBarManager.add(new ToggleNafAction(this));
    ToolBar searchtoolbar = toolBarManager.createControl(upperRightBase);

    // add search box and navigation buttons for search results
    ToolItem itemSeparator = new ToolItem(searchtoolbar, SWT.SEPARATOR | SWT.RIGHT);
    searchTextarea = new Text(searchtoolbar, SWT.BORDER | SWT.SINGLE | SWT.SEARCH);
    searchTextarea.pack();
    itemSeparator.setWidth(searchTextarea.getBounds().width);
    itemSeparator.setControl(searchTextarea);
    itemPrev = new ToolItem(searchtoolbar, SWT.SIMPLE);
    itemPrev.setImage(ImageHelper.loadImageDescriptorFromResource("images/prev.png").createImage());
    itemNext = new ToolItem(searchtoolbar, SWT.SIMPLE);
    itemNext.setImage(ImageHelper.loadImageDescriptorFromResource("images/next.png").createImage());
    itemDeleteAndInfo = new ToolItem(searchtoolbar, SWT.SIMPLE);
    itemDeleteAndInfo.setImage(ImageHelper.loadImageDescriptorFromResource("images/delete.png").createImage());
    itemDeleteAndInfo.setToolTipText("Clear search results");
    coordinateLabel = new ToolItem(searchtoolbar, SWT.SIMPLE);
    coordinateLabel.setText("");
    coordinateLabel.setEnabled(false);

    // add search function
    searchTextarea.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent event) {
            if (event.keyCode == SWT.CR) {
                String term = searchTextarea.getText();
                if (!term.isEmpty()) {
                    if (term.equals(mLastSearchedTerm)) {
                        nextSearchResult();
                        return;
                    }
                    clearSearchResult();
                    mSearchResult = mModel.searchNode(term);
                    if (!mSearchResult.isEmpty()) {
                        mSearchResultIndex = 0;
                        updateSearchResultSelection();
                        mLastSearchedTerm = term;
                    }
                }
            }
        }

        @Override
        public void keyPressed(KeyEvent event) {
        }
    });
    SelectionListener l = new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent se) {
            if (se.getSource() == itemPrev) {
                prevSearchResult();
            } else if (se.getSource() == itemNext) {
                nextSearchResult();
            } else if (se.getSource() == itemDeleteAndInfo) {
                searchTextarea.setText("");
                clearSearchResult();
            }
        }
    };
    itemPrev.addSelectionListener(l);
    itemNext.addSelectionListener(l);
    itemDeleteAndInfo.addSelectionListener(l);

    searchtoolbar.pack();
    searchtoolbar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    mTreeViewer = new TreeViewer(upperRightBase, SWT.NONE);
    mTreeViewer.setContentProvider(new BasicTreeNodeContentProvider());
    // default LabelProvider uses toString() to generate text to display
    mTreeViewer.setLabelProvider(new LabelProvider());
    mTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            BasicTreeNode selectedNode = null;
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                Object o = selection.getFirstElement();
                if (o instanceof BasicTreeNode) {
                    selectedNode = (BasicTreeNode) o;
                }
            }

            mModel.setSelectedNode(selectedNode);
            redrawScreenshot();
            if (selectedNode != null) {
                loadAttributeTable();
            }
        }
    });
    Tree tree = mTreeViewer.getTree();
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    // move focus so that it's not on tool bar (looks weird)
    tree.setFocus();

    // lower-right base contains the detail group
    Composite lowerRightBase = new Composite(rightSash, SWT.BORDER);
    lowerRightBase.setLayout(new FillLayout());
    Group grpNodeDetail = new Group(lowerRightBase, SWT.NONE);
    grpNodeDetail.setLayout(new FillLayout(SWT.HORIZONTAL));
    grpNodeDetail.setText("Node Detail");

    Composite tableContainer = new Composite(grpNodeDetail, SWT.NONE);

    TableColumnLayout columnLayout = new TableColumnLayout();
    tableContainer.setLayout(columnLayout);

    mTableViewer = new TableViewer(tableContainer, SWT.NONE | SWT.FULL_SELECTION);
    Table table = mTableViewer.getTable();
    table.setLinesVisible(true);
    // use ArrayContentProvider here, it assumes the input to the TableViewer
    // is an array, where each element represents a row in the table
    mTableViewer.setContentProvider(new ArrayContentProvider());

    TableViewerColumn tableViewerColumnKey = new TableViewerColumn(mTableViewer, SWT.NONE);
    TableColumn tblclmnKey = tableViewerColumnKey.getColumn();
    tableViewerColumnKey.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof AttributePair) {
                // first column, shows the attribute name
                return ((AttributePair) element).key;
            }
            return super.getText(element);
        }
    });
    columnLayout.setColumnData(tblclmnKey, new ColumnWeightData(1, ColumnWeightData.MINIMUM_WIDTH, true));

    TableViewerColumn tableViewerColumnValue = new TableViewerColumn(mTableViewer, SWT.NONE);
    tableViewerColumnValue.setEditingSupport(new AttributeTableEditingSupport(mTableViewer));
    TableColumn tblclmnValue = tableViewerColumnValue.getColumn();
    columnLayout.setColumnData(tblclmnValue, new ColumnWeightData(2, ColumnWeightData.MINIMUM_WIDTH, true));
    tableViewerColumnValue.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof AttributePair) {
                // second column, shows the attribute value
                return ((AttributePair) element).value;
            }
            return super.getText(element);
        }
    });
    SashForm downSash = new SashForm(baseSash, SWT.VERTICAL | SWT.BORDER);
    scriptTextarea = new Text(downSash, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
    downSash.setMaximizedControl(scriptTextarea);
    scriptTextarea.pack();
    scriptTextarea.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent event) {
            if (event.keyCode == SWT.CR) {
                String lastterm = scriptTextarea.getText();
                if (!lastterm.isEmpty()) {
                    if (count == 0) {

                        MessageDialog.openWarning(shell, "", "");
                        term = lastterm;
                        scriptTextarea.setText(term);
                        count++;
                    } else {
                        term += lastterm;
                        scriptTextarea.setText(term);
                        count++;
                    }
                }
            }
        }

        @Override
        public void keyPressed(KeyEvent event) {
        }
    });
    baseSash.setWeights(new int[] { 4, 3, 3 });
    // sets the ratio of the vertical split: left 5 vs right 3

    //baseSash.setWeights(new int[] {5,3});
}

From source file:com.apicloud.navigator.ui.editors.ConfigEditor.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    parent.setLayout(new GridLayout(1, false));

    ScrolledComposite scrolledComposite = new ScrolledComposite(parent,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    scrolledComposite.setExpandVertical(true);
    scrolledComposite.setExpandHorizontal(true);
    scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    formToolkit.adapt(scrolledComposite);
    formToolkit.paintBordersFor(scrolledComposite);
    scrolledComposite.setMinWidth(600);//from  w  ww  .  jav a2  s.  com
    scrolledComposite.setMinHeight(1400);
    scrolledComposite.getVerticalBar().setIncrement(10);

    Composite composite_3 = new Composite(scrolledComposite, SWT.NONE);
    formToolkit.adapt(composite_3);
    formToolkit.paintBordersFor(composite_3);
    composite_3.setLayout(new GridLayout(1, false));

    generalSection = new GeneralSectionBuilder(formToolkit, composite_3, this);
    generalSection.buildUI();
    generalSection.bindData(config);

    Section preferenceSection = formToolkit.createSection(composite_3, Section.TWISTIE | Section.TITLE_BAR);
    preferenceSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.paintBordersFor(preferenceSection);
    preferenceSection.setText("\u504F\u597D\u8BBE\u7F6E");
    preferenceSection.setExpanded(true);

    Composite preferenceComposite = formToolkit.createComposite(preferenceSection, SWT.NONE);
    preferenceComposite.setToolTipText("");
    formToolkit.paintBordersFor(preferenceComposite);
    preferenceSection.setClient(preferenceComposite);
    preferenceComposite.setLayout(new GridLayout(2, false));

    Label appBackground = new Label(preferenceComposite, SWT.NONE);
    appBackground.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
    formToolkit.adapt(appBackground, true, true);
    appBackground.setText("appBackground:");

    Composite appBackgroundComposite = new Composite(preferenceComposite, SWT.NONE);
    appBackgroundComposite.setLayout(new GridLayout(1, false));
    appBackgroundComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(appBackgroundComposite);
    formToolkit.paintBordersFor(appBackgroundComposite);

    appBackgroundText = new Text(appBackgroundComposite, SWT.BORDER);
    GridData gd_appBackgroundText = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_appBackgroundText.widthHint = 200;
    appBackgroundText.setLayoutData(gd_appBackgroundText);
    appBackgroundText.setText(getPreferenceValue("appBackground", config) == null ? ""
            : getPreferenceValue("appBackground", config));
    appBackgroundText.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent e) {
            String value = appBackgroundText.getText() == null ? "" : appBackgroundText.getText();
            changePreferenceValue("appBackground", value);
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }
    });
    formToolkit.adapt(appBackgroundText, true, true);

    Label windowBackground = new Label(preferenceComposite, SWT.NONE);
    windowBackground.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(windowBackground, true, true);
    windowBackground.setText("windowBackground:");

    Composite windowBackgroundComposite = new Composite(preferenceComposite, SWT.NONE);
    windowBackgroundComposite.setLayout(new GridLayout(1, false));
    windowBackgroundComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(windowBackgroundComposite);
    formToolkit.paintBordersFor(windowBackgroundComposite);

    windowBackgroundText = new Text(windowBackgroundComposite, SWT.BORDER);
    GridData gd_windowBackgroundText = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_windowBackgroundText.widthHint = 200;
    windowBackgroundText.setLayoutData(gd_windowBackgroundText);
    windowBackgroundText.setText(getPreferenceValue("windowBackground", config) == null ? ""
            : getPreferenceValue("windowBackground", config));
    windowBackgroundText.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent e) {
            String value = windowBackgroundText.getText() == null ? "" : windowBackgroundText.getText();
            changePreferenceValue("windowBackground", value);
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }
    });
    formToolkit.adapt(windowBackgroundText, true, true);

    Label frameBackground = new Label(preferenceComposite, SWT.NONE);
    frameBackground.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(frameBackground, true, true);
    frameBackground.setText("frameBackgroundColor:");

    Composite frameBackgroundComposite = new Composite(preferenceComposite, SWT.NONE);
    frameBackgroundComposite.setLayout(new GridLayout(6, false));
    frameBackgroundComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(frameBackgroundComposite);
    formToolkit.paintBordersFor(frameBackgroundComposite);

    frameBackgroundText = new Text(frameBackgroundComposite, SWT.BORDER);
    GridData gd_frameBackgroundText = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_frameBackgroundText.widthHint = 200;
    frameBackgroundText.setLayoutData(gd_frameBackgroundText);
    frameBackgroundText.setText(getPreferenceValue("frameBackgroundColor", config) == null ? ""
            : getPreferenceValue("frameBackgroundColor", config));
    frameBackgroundText.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent e) {
            String value = frameBackgroundText.getText() == null ? "" : frameBackgroundText.getText();
            changePreferenceValue("frameBackgroundColor", value);
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }
    });
    formToolkit.adapt(frameBackgroundText, true, true);

    Label lblNewLabel_4 = new Label(frameBackgroundComposite, SWT.NONE);
    formToolkit.adapt(lblNewLabel_4, true, true);
    new Label(frameBackgroundComposite, SWT.NONE);
    new Label(frameBackgroundComposite, SWT.NONE);
    new Label(frameBackgroundComposite, SWT.NONE);
    new Label(frameBackgroundComposite, SWT.NONE);

    Label pageBounce = new Label(preferenceComposite, SWT.NONE);
    pageBounce.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(pageBounce, true, true);
    pageBounce.setText("pageBounce:");

    Composite pageBounceComposite = new Composite(preferenceComposite, SWT.NONE);
    pageBounceComposite.setLayout(new GridLayout(2, false));
    pageBounceComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(pageBounceComposite);
    formToolkit.paintBordersFor(pageBounceComposite);

    pageBounceButton_ok = new Button(pageBounceComposite, SWT.RADIO | SWT.RIGHT);
    pageBounceButton_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("pageBounce", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    pageBounceButton_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(pageBounceButton_ok, true, true);
    pageBounceButton_ok.setText("true");

    pageBounceButton_cancel = new Button(pageBounceComposite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("pageBounce", config) == null ? "false"
            : getPreferenceValue("pageBounce", config))) {
        pageBounceButton_ok.setSelection(true);
        changePreferenceValue("pageBounce", "true");
    } else {
        pageBounceButton_cancel.setSelection(true);
        changePreferenceValue("pageBounce", "false");
    }
    pageBounceButton_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("pageBounce", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(pageBounceButton_cancel, true, true);
    pageBounceButton_cancel.setText("false");

    Label hScrollBarEnabled = new Label(preferenceComposite, SWT.NONE);
    hScrollBarEnabled.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(hScrollBarEnabled, true, true);
    hScrollBarEnabled.setText("hScrollBarEnabled:");

    Composite hScrollBarEnabledComposite = new Composite(preferenceComposite, SWT.NONE);
    hScrollBarEnabledComposite.setLayout(new GridLayout(2, false));
    hScrollBarEnabledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(hScrollBarEnabledComposite);
    formToolkit.paintBordersFor(hScrollBarEnabledComposite);

    hScrollBarEnabledButton_ok = new Button(hScrollBarEnabledComposite, SWT.RADIO | SWT.RIGHT);
    hScrollBarEnabledButton_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("hScrollBarEnabled", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    hScrollBarEnabledButton_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(hScrollBarEnabledButton_ok, true, true);
    hScrollBarEnabledButton_ok.setText("true");

    hScrollBarEnabledButton_cancel = new Button(hScrollBarEnabledComposite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("hScrollBarEnabled", config) == null ? "false"
            : getPreferenceValue("hScrollBarEnabled", config))) {
        hScrollBarEnabledButton_ok.setSelection(true);
        changePreferenceValue("hScrollBarEnabled", "true");
    } else {
        hScrollBarEnabledButton_cancel.setSelection(true);
        changePreferenceValue("hScrollBarEnabled", "false");
    }
    hScrollBarEnabledButton_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("hScrollBarEnabled", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(hScrollBarEnabledButton_cancel, true, true);
    hScrollBarEnabledButton_cancel.setText("false");

    Label vScrollBarEnabled = new Label(preferenceComposite, SWT.NONE);
    vScrollBarEnabled.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(vScrollBarEnabled, true, true);
    vScrollBarEnabled.setText("vScrollBarEnabled:");

    Composite vScrollBarEnabledComposite = new Composite(preferenceComposite, SWT.NONE);
    vScrollBarEnabledComposite.setLayout(new GridLayout(2, false));
    vScrollBarEnabledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(vScrollBarEnabledComposite);
    formToolkit.paintBordersFor(vScrollBarEnabledComposite);

    vScrollBarEnabledButton_ok = new Button(vScrollBarEnabledComposite, SWT.RADIO | SWT.RIGHT);
    vScrollBarEnabledButton_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("vScrollBarEnabled", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    vScrollBarEnabledButton_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(vScrollBarEnabledButton_ok, true, true);
    vScrollBarEnabledButton_ok.setText("true");

    vScrollBarEnabledButton_cancel = new Button(vScrollBarEnabledComposite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("vScrollBarEnabled", config) == null ? "false"
            : getPreferenceValue("vScrollBarEnabled", config))) {
        vScrollBarEnabledButton_ok.setSelection(true);
        changePreferenceValue("vScrollBarEnabled", "true");
    } else {
        vScrollBarEnabledButton_cancel.setSelection(true);
        changePreferenceValue("vScrollBarEnabled", "false");
    }
    vScrollBarEnabledButton_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("vScrollBarEnabled", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(vScrollBarEnabledButton_cancel, true, true);
    vScrollBarEnabledButton_cancel.setText("false");

    Label fullScreen = new Label(preferenceComposite, SWT.NONE);
    fullScreen.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(fullScreen, true, true);
    fullScreen.setText("fullScreen:");

    Composite fullScreenComposite = new Composite(preferenceComposite, SWT.NONE);
    fullScreenComposite.setLayout(new GridLayout(2, false));
    fullScreenComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(fullScreenComposite);
    formToolkit.paintBordersFor(fullScreenComposite);

    fullScreenButton_ok = new Button(fullScreenComposite, SWT.RADIO | SWT.RIGHT);
    fullScreenButton_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("fullScreen", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });

    fullScreenButton_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(fullScreenButton_ok, true, true);
    fullScreenButton_ok.setText("true");

    fullScreenButton_cancel = new Button(fullScreenComposite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("fullScreen", config) == null ? "false"
            : getPreferenceValue("fullScreen", config))) {
        fullScreenButton_ok.setSelection(true);
        changePreferenceValue("fullScreen", "true");
    } else {
        fullScreenButton_cancel.setSelection(true);
        changePreferenceValue("fullScreen", "false");
    }
    fullScreenButton_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("fullScreen", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(fullScreenButton_cancel, true, true);
    fullScreenButton_cancel.setText("false");

    Label ios7 = new Label(preferenceComposite, SWT.NONE);
    ios7.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(ios7, true, true);
    ios7.setText("IOS7StatusBarAppearance:");

    Composite ios7Composite = new Composite(preferenceComposite, SWT.NONE);
    ios7Composite.setLayout(new GridLayout(2, false));
    ios7Composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(ios7Composite);
    formToolkit.paintBordersFor(ios7Composite);

    ios7Button_ok = new Button(ios7Composite, SWT.RADIO | SWT.RIGHT);
    ios7Button_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("iOS7StatusBarAppearance", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    ios7Button_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(ios7Button_ok, true, true);
    ios7Button_ok.setText("true");

    ios7Button_cancel = new Button(ios7Composite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("iOS7StatusBarAppearance", config) == null ? "false"
            : getPreferenceValue("iOS7StatusBarAppearance", config))) {
        ios7Button_ok.setSelection(true);
        changePreferenceValue("iOS7StatusBarAppearance", "true");
    } else {
        ios7Button_cancel.setSelection(true);
        changePreferenceValue("iOS7StatusBarAppearance", "false");
    }
    ios7Button_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("iOS7StatusBarAppearance", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(ios7Button_cancel, true, true);
    ios7Button_cancel.setText("false");

    Label autoLaunch = new Label(preferenceComposite, SWT.NONE);
    autoLaunch.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(autoLaunch, true, true);
    autoLaunch.setText("autoLaunch:");

    Composite autoLaunchComposite = new Composite(preferenceComposite, SWT.NONE);
    autoLaunchComposite.setLayout(new GridLayout(2, false));
    autoLaunchComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(autoLaunchComposite);
    formToolkit.paintBordersFor(autoLaunchComposite);

    autoLaunchButton_ok = new Button(autoLaunchComposite, SWT.RADIO | SWT.RIGHT);
    autoLaunchButton_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("autoLaunch", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    autoLaunchButton_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(autoLaunchButton_ok, true, true);
    autoLaunchButton_ok.setText("true");

    autoLaunchButton_cancel = new Button(autoLaunchComposite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("autoLaunch", config) == null ? "false"
            : getPreferenceValue("autoLaunch", config))) {
        autoLaunchButton_ok.setSelection(true);
        changePreferenceValue("autoLaunch", "true");
    } else {
        autoLaunchButton_cancel.setSelection(true);
        changePreferenceValue("autoLaunch", "false");
    }
    autoLaunchButton_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("autoLaunch", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(autoLaunchButton_cancel, true, true);
    autoLaunchButton_cancel.setText("false");

    Label autoUpdate = new Label(preferenceComposite, SWT.NONE);
    autoUpdate.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(autoUpdate, true, true);
    autoUpdate.setText("autoUpdate:");

    Composite autoUpdateComposite = new Composite(preferenceComposite, SWT.NONE);
    autoUpdateComposite.setLayout(new GridLayout(2, false));
    autoUpdateComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(autoUpdateComposite);
    formToolkit.paintBordersFor(autoUpdateComposite);

    autoUpdateButton_ok = new Button(autoUpdateComposite, SWT.RADIO | SWT.RIGHT);
    autoUpdateButton_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("autoUpdate", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    autoUpdateButton_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(autoUpdateButton_ok, true, true);
    autoUpdateButton_ok.setText("true");

    autoUpdateButton_cancel = new Button(autoUpdateComposite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("autoUpdate", config) == null ? "false"
            : getPreferenceValue("autoUpdate", config))) {
        autoUpdateButton_ok.setSelection(true);
        changePreferenceValue("autoUpdate", "true");
    } else {
        autoUpdateButton_cancel.setSelection(true);
        changePreferenceValue("autoUpdate", "false");
    }
    autoUpdateButton_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("autoUpdate", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(autoUpdateButton_cancel, true, true);
    autoUpdateButton_cancel.setText("false");

    Label smartUpdate = new Label(preferenceComposite, SWT.NONE);
    smartUpdate.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(smartUpdate, true, true);
    smartUpdate.setText("smartUpdate:");

    Composite smartUpdateComposite = new Composite(preferenceComposite, SWT.NONE);
    smartUpdateComposite.setLayout(new GridLayout(2, false));
    smartUpdateComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.adapt(smartUpdateComposite);
    formToolkit.paintBordersFor(smartUpdateComposite);

    smartUpdateButton_ok = new Button(smartUpdateComposite, SWT.RADIO | SWT.RIGHT);
    smartUpdateButton_ok.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("smartUpdate", "true");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    smartUpdateButton_ok.setAlignment(SWT.LEFT);
    formToolkit.adapt(smartUpdateButton_ok, true, true);
    smartUpdateButton_ok.setText("true");

    smartUpdateButton_cancel = new Button(smartUpdateComposite, SWT.RADIO);
    if (Boolean.parseBoolean(getPreferenceValue("smartUpdate", config) == null ? "false"
            : getPreferenceValue("smartUpdate", config))) {
        smartUpdateButton_ok.setSelection(true);
        changePreferenceValue("smartUpdate", "true");
    } else {
        smartUpdateButton_cancel.setSelection(true);
        changePreferenceValue("smartUpdate", "false");
    }
    smartUpdateButton_cancel.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            changePreferenceValue("smartUpdate", "false");
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }

    });
    formToolkit.adapt(smartUpdateButton_cancel, true, true);
    smartUpdateButton_cancel.setText("false");
    Section featureSection = formToolkit.createSection(composite_3, Section.TWISTIE | Section.TITLE_BAR);
    GridData gd_featureSection = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
    gd_featureSection.heightHint = 112;
    featureSection.setLayoutData(gd_featureSection);
    formToolkit.paintBordersFor(featureSection);
    featureSection.setText(Messages.FEATURESETUP);
    featureSection.setExpanded(true);

    Composite composite_8 = new Composite(featureSection, SWT.NONE);
    formToolkit.adapt(composite_8);
    formToolkit.paintBordersFor(composite_8);
    featureSection.setClient(composite_8);
    composite_8.setLayout(new GridLayout(1, false));

    Label lblNewLabel_1 = new Label(composite_8, SWT.NONE);
    lblNewLabel_1.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(lblNewLabel_1, true, true);
    lblNewLabel_1.setText(Messages.SYSTEMINFO);

    Composite composite = new Composite(composite_8, SWT.NONE);
    GridData gd_composite = new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1);
    gd_composite.widthHint = 380;
    composite.setLayoutData(gd_composite);
    formToolkit.adapt(composite);
    formToolkit.paintBordersFor(composite);

    final Label addFeatureLabel = formToolkit.createLabel(composite, "", SWT.NONE);
    addFeatureLabel.setImage(Activator.getImage("icons/addfeature.png"));
    addFeatureLabel.setBounds(0, 0, 90, 26);
    addFeatureLabel.addMouseListener(new MouseAdapter() {

        public void mouseUp(MouseEvent e) {
            AddFeatureDialog dialog = new AddFeatureDialog(getSite().getShell(), ConfigEditor.this, treeViewer,
                    config);

            dialog.open();
        }
    });
    addFeatureLabel.addMouseTrackListener(new MouseTrackListener() {
        @Override
        public void mouseHover(MouseEvent e) {
            addFeatureLabel.setImage(Activator.getImage("icons/addfeaturefocus.png"));
        }

        @Override
        public void mouseExit(MouseEvent e) {
            addFeatureLabel.setImage(Activator.getImage("icons/addfeature.png"));
        }

        @Override
        public void mouseEnter(MouseEvent e) {
            addFeatureLabel.setImage(Activator.getImage("icons/addfeaturefocus.png"));
        }
    });

    final Label addParamLabel = formToolkit.createLabel(composite, "", SWT.NONE);
    addParamLabel.setImage(Activator.getImage("icons/addParam.png"));
    addParamLabel.setBounds(95, 0, 90, 26);
    addParamLabel.addMouseListener(new MouseAdapter() {

        public void mouseUp(MouseEvent e) {
            if (config.getFeatures().size() == 0) {
                MessageDialog.openInformation(getSite().getShell(), Messages.PackageAppItemDialog_INFO,
                        Messages.ADDFEATURE);
                return;
            }
            CreateParamDialog dialog = new CreateParamDialog(getSite().getShell(), ConfigEditor.this,
                    treeViewer, config);
            dialog.open();
        }
    });
    addParamLabel.addMouseTrackListener(new MouseTrackListener() {
        @Override
        public void mouseHover(MouseEvent e) {
            addParamLabel.setImage(Activator.getImage("icons/addParamfocus.png"));
        }

        @Override
        public void mouseExit(MouseEvent e) {
            addParamLabel.setImage(Activator.getImage("icons/addParam.png"));
        }

        @Override
        public void mouseEnter(MouseEvent e) {
            addParamLabel.setImage(Activator.getImage("icons/addParamfocus.png"));
        }
    });

    final Label deleteNodeLabel = formToolkit.createLabel(composite, "", SWT.NONE);
    deleteNodeLabel.setImage(Activator.getImage("icons/deleteNode.png"));
    deleteNodeLabel.setBounds(290, 0, 90, 26);
    deleteNodeLabel.addMouseListener(new MouseAdapter() {

        public void mouseUp(MouseEvent e) {
            if (treeViewer.getSelection() == null)
                return;
            IStructuredSelection ss = (StructuredSelection) treeViewer.getSelection();
            if (ss.getFirstElement() instanceof TreeNode) {
                TreeNode node = (TreeNode) ss.getFirstElement();
                if (node.getValue() instanceof Feature) {
                    config.getFeatures().remove((Feature) node.getValue());
                }
                if (node.getValue() instanceof Param) {
                    TreeNode parent = node.getParent();
                    Feature feature = (Feature) parent.getValue();
                    Param param = (Param) node.getValue();
                    feature.removeParams(param);
                }
                dirty = true;
                firePropertyChange(PROP_DIRTY);
                treeViewer.setInput(config.createTreeNode());
                treeViewer.refresh();
            }
        }
    });
    deleteNodeLabel.addMouseTrackListener(new MouseTrackListener() {
        @Override
        public void mouseHover(MouseEvent e) {
            deleteNodeLabel.setImage(Activator.getImage("icons/deleteNodefocus.png"));
        }

        @Override
        public void mouseExit(MouseEvent e) {
            deleteNodeLabel.setImage(Activator.getImage("icons/deleteNode.png"));
        }

        @Override
        public void mouseEnter(MouseEvent e) {
            deleteNodeLabel.setImage(Activator.getImage("icons/deleteNodefocus.png"));
        }
    });

    treeViewer = new TreeViewer(composite_8, SWT.BORDER | SWT.FULL_SELECTION);
    Tree tree = treeViewer.getTree();
    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    GridData gd_tree = new GridData(SWT.CENTER, SWT.FILL, true, true, 1, 1);
    gd_tree.heightHint = 112;
    tree.setLayoutData(gd_tree);
    formToolkit.paintBordersFor(tree);
    this.treeViewer.setContentProvider(new TreeNodeContentProvider());
    TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
    TreeColumn trclmnNewColumn = treeViewerColumn.getColumn();
    trclmnNewColumn.setWidth(180);
    trclmnNewColumn.setText("\u540D\u79F0");
    treeViewerColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            TreeNode treeNode = TreeNode.class.cast(element);
            if (treeNode.getValue() instanceof Feature) {
                return ((Feature) treeNode.getValue()).getName();
            }
            if (treeNode.getValue() instanceof Param) {
                return ((Param) treeNode.getValue()).getName();
            }
            return element.toString();
        }

    });

    TreeViewerColumn treeViewerColumn_1 = new TreeViewerColumn(treeViewer, SWT.NONE);
    TreeColumn trclmnNewColumn_1 = treeViewerColumn_1.getColumn();
    trclmnNewColumn_1.setWidth(180);
    trclmnNewColumn_1.setText("\u503C");
    treeViewerColumn_1.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            TreeNode treeNode = TreeNode.class.cast(element);
            if (treeNode.getValue() instanceof Feature) {
                return "";
            }
            if (treeNode.getValue() instanceof Param) {
                return ((Param) treeNode.getValue()).getValue();
            }
            return element.toString();
        }

    });
    this.treeViewer.setInput(config.createTreeNode());
    treeViewer.setColumnProperties(new String[] { "name", "value" });
    CellEditor[] treeViewer_editors = new CellEditor[tree.getColumnCount()];
    treeViewer_editors[0] = new TextCellEditor(tree);
    treeViewer_editors[1] = new TextCellEditor(tree);

    treeViewer.setCellEditors(treeViewer_editors);
    treeViewer.setCellModifier(new ICellModifier() {

        @Override
        public boolean canModify(Object element, String property) {
            TreeNode treeNode = TreeNode.class.cast(element);
            if (treeNode.getValue() instanceof Feature && property.equals("value")) { //$NON-NLS-1$
                return false;
            }
            if (property.equals("name"))
                return false;
            return true;
        }

        @Override
        public Object getValue(Object element, String property) {
            Object value = ""; //$NON-NLS-1$
            TreeNode treeNode = TreeNode.class.cast(element);
            if (treeNode.getValue() instanceof Feature) {
                Feature feautre = Feature.class.cast(treeNode.getValue());
                if (property.equals("name")) {
                    value = feautre.getName();
                }
            }
            if (treeNode.getValue() instanceof Param) {
                Param param = Param.class.cast(treeNode.getValue());
                if (property.equals("name")) {
                    value = param.getName();
                } else if (property.equals("value")) {
                    value = param.getValue();
                }
            }
            return value;
        }

        @Override
        public void modify(Object element, String property, Object value) {
            TreeItem item = (TreeItem) element;
            Object o = item.getData();
            TreeNode treeNode = TreeNode.class.cast(o);
            if (treeNode.getValue() instanceof Feature) {
                Feature feautre = Feature.class.cast(treeNode.getValue());
                if (property.equals("name")) {
                    if ("".equals(value)) {
                        MessageDialog.openInformation(null, Messages.AddFeatureDialog_INFORMATION,
                                Messages.CreateFeatureDialog_FEATURE_NMAE_NOT_NULL);
                    } else {
                        if (!feautre.getName().equals((String) value)) {
                            feautre.setName((String) value);
                            dirty = true;
                            firePropertyChange(PROP_DIRTY);
                            treeViewer.refresh();
                        }
                    }
                }
            }
            if (treeNode.getValue() instanceof Param) {
                Param param = Param.class.cast(treeNode.getValue());
                if (property.equals("name")) {
                    if ("".equals(value)) {
                        MessageDialog.openInformation(null, Messages.PackageAppItemDialog_INFO,
                                Messages.PARAMNAMEISNULL);
                    } else {
                        if (!param.getName().equals((String) value)) {
                            param.setName((String) value);
                            dirty = true;
                            firePropertyChange(PROP_DIRTY);
                            treeViewer.refresh();
                        }
                    }
                } else if (property.equals("value")) {
                    if ("".equals(value)) {
                        MessageDialog.openInformation(null, Messages.PackageAppItemDialog_INFO,
                                Messages.PARAMNAMEISNULL);
                    } else {
                        if (!param.getValue().equals((String) value)) {
                            param.setValue((String) value);
                            dirty = true;
                            firePropertyChange(PROP_DIRTY);
                            treeViewer.refresh();
                        }
                    }
                }
            }
        }
    });

    final Section sctnNewSection_1 = formToolkit.createSection(composite_3,
            Section.TWISTIE | Section.TITLE_BAR);
    GridData gd_sctnNewSection_1 = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
    gd_sctnNewSection_1.heightHint = 73;
    sctnNewSection_1.setLayoutData(gd_sctnNewSection_1);
    formToolkit.paintBordersFor(sctnNewSection_1);
    sctnNewSection_1.setText(Messages.PERMISSIONSETTINGS);
    sctnNewSection_1.setExpanded(true);

    Composite composite_5 = formToolkit.createComposite(sctnNewSection_1, SWT.NONE);
    formToolkit.paintBordersFor(composite_5);
    sctnNewSection_1.setClient(composite_5);
    composite_5.setLayout(new GridLayout(3, false));

    Label lblNewLabel_2 = new Label(composite_5, SWT.NONE);
    lblNewLabel_2.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 3, 1));
    formToolkit.adapt(lblNewLabel_2, true, true);
    lblNewLabel_2.setText(Messages.PERMISSIONINFO);

    tableViewer_1 = new TableViewer(composite_5, SWT.BORDER | SWT.FULL_SELECTION);
    table_1 = tableViewer_1.getTable();
    table_1.setLinesVisible(true);
    table_1.setHeaderVisible(true);
    GridData gd_table_1 = new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1);
    gd_table_1.heightHint = 250;
    table_1.setLayoutData(gd_table_1);
    formToolkit.paintBordersFor(table_1);

    TableViewerColumn tableViewerColumn_2 = new TableViewerColumn(tableViewer_1, SWT.NONE);
    TableColumn tblclmnNewColumn_2 = tableViewerColumn_2.getColumn();
    tblclmnNewColumn_2.setResizable(false);
    tblclmnNewColumn_2.setMoveable(false);
    tblclmnNewColumn_2.setWidth(160);
    tblclmnNewColumn_2.setText(Messages.STARTED);
    tableViewerColumn_2.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((Permission) element).getName();
        }

    });

    tableViewer_1.setContentProvider(new ArrayContentProvider());
    tableViewer_1.setInput(config.getPermissions());
    tableViewer_1.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {

            StructuredSelection ss = (StructuredSelection) event.getSelection();
            Permission p = (Permission) ss.getFirstElement();
            config.getPermissions().remove(p);
            tableViewer_1.setInput(config.getPermissions());
            tableViewer_3.setInput(getUnauthorized(config));
            sctnNewSection_1.setExpanded(false);
            sctnNewSection_1.setExpanded(true);
            dirty = true;
            firePropertyChange(PROP_DIRTY);

        }
    });
    table_1.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            sctnNewSection_1.setExpanded(false);
            sctnNewSection_1.setExpanded(true);
        }

        @Override
        public void focusGained(FocusEvent e) {
            sctnNewSection_1.setExpanded(false);
            sctnNewSection_1.setExpanded(true);
        }
    });

    Label lblNewLabel = new Label(composite_5, SWT.NONE);
    lblNewLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(lblNewLabel, true, true);
    lblNewLabel.setText(Messages.CHANGEBUTTON);

    tableViewer_3 = new TableViewer(composite_5, SWT.BORDER | SWT.FULL_SELECTION);
    table_3 = tableViewer_3.getTable();
    table_3.setLinesVisible(true);
    table_3.setHeaderVisible(true);
    table_3.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, true, false, 1, 1));
    formToolkit.paintBordersFor(table_3);

    TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer_3, SWT.NONE);
    TableColumn tableColumn = tableViewerColumn.getColumn();
    tableColumn.setResizable(false);
    tableColumn.setMoveable(false);
    tableColumn.setWidth(160);
    tableColumn.setText(Messages.UNSTARTED);
    tableViewerColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((Permission) element).getName();
        }

    });

    tableViewer_3.setContentProvider(new ArrayContentProvider());
    tableViewer_3.setInput(getUnauthorized(config));
    tableViewer_3.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            StructuredSelection ss = (StructuredSelection) event.getSelection();
            Permission p = (Permission) ss.getFirstElement();
            config.getPermissions().add(p);
            tableViewer_1.setInput(config.getPermissions());
            tableViewer_3.setInput(getUnauthorized(config));
            sctnNewSection_1.setExpanded(false);
            sctnNewSection_1.setExpanded(true);
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }
    });
    table_3.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            sctnNewSection_1.setExpanded(false);
            sctnNewSection_1.setExpanded(true);
        }

        @Override
        public void focusGained(FocusEvent e) {
            sctnNewSection_1.setExpanded(false);
            sctnNewSection_1.setExpanded(true);
        }
    });

    Section sctnNewSection = formToolkit.createSection(composite_3, Section.TWISTIE | Section.TITLE_BAR);
    sctnNewSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    formToolkit.paintBordersFor(sctnNewSection);
    sctnNewSection.setText(Messages.ACCESSSETTINGS);
    sctnNewSection.setExpanded(true);

    Composite composite_9 = formToolkit.createComposite(sctnNewSection, SWT.NONE);
    formToolkit.paintBordersFor(composite_9);
    sctnNewSection.setClient(composite_9);
    composite_9.setLayout(new GridLayout(1, false));

    Label lblNewLabel_9 = new Label(composite_9, SWT.NONE);
    lblNewLabel_9.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    formToolkit.adapt(lblNewLabel_9, true, true);
    lblNewLabel_9.setText(Messages.ACCESSSINFO);

    Composite composite_2 = formToolkit.createComposite(composite_9, SWT.NONE);
    composite_2.setLayout(null);
    GridData gd_composite_2 = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1);
    gd_composite_2.widthHint = 380;
    composite_2.setLayoutData(gd_composite_2);
    formToolkit.paintBordersFor(composite_2);

    final Label addLabel = formToolkit.createLabel(composite_2, "", SWT.NONE);
    addLabel.setImage(Activator.getImage("icons/add.png"));
    addLabel.setBounds(0, 0, 55, 26);
    addLabel.addMouseListener(new MouseAdapter() {

        public void mouseUp(MouseEvent e) {
            Access a = new Access();
            a.setOrigin("*");
            config.getAccesses().add(a);
            tableViewer_2.setInput(config.getAccesses());
            tableViewer_2.refresh();
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }
    });
    addLabel.addMouseTrackListener(new MouseTrackListener() {
        @Override
        public void mouseHover(MouseEvent e) {
            addLabel.setImage(Activator.getImage("icons/addfocus.png"));
        }

        @Override
        public void mouseExit(MouseEvent e) {
            addLabel.setImage(Activator.getImage("icons/add.png"));
        }

        @Override
        public void mouseEnter(MouseEvent e) {
            addLabel.setImage(Activator.getImage("icons/addfocus.png"));
        }
    });

    final Label deleteLabel = formToolkit.createLabel(composite_2, "", SWT.NONE);
    deleteLabel.setImage(Activator.getImage("icons/delete.png"));
    deleteLabel.setBounds(60, 0, 55, 26);
    deleteLabel.addMouseListener(new MouseAdapter() {

        public void mouseUp(MouseEvent e) {
            StructuredSelection ss = (StructuredSelection) tableViewer_2.getSelection();
            if (ss.getFirstElement() == null) {
                return;
            }
            Access a = (Access) ss.getFirstElement();
            config.getAccesses().remove(a);
            tableViewer_2.refresh();
            dirty = true;
            firePropertyChange(PROP_DIRTY);
        }
    });
    deleteLabel.addMouseTrackListener(new MouseTrackListener() {
        @Override
        public void mouseHover(MouseEvent e) {
            deleteLabel.setImage(Activator.getImage("icons/deletefocus.png"));
        }

        @Override
        public void mouseExit(MouseEvent e) {
            deleteLabel.setImage(Activator.getImage("icons/delete.png"));
        }

        @Override
        public void mouseEnter(MouseEvent e) {
            deleteLabel.setImage(Activator.getImage("icons/deletefocus.png"));
        }
    });

    tableViewer_2 = new TableViewer(composite_9, SWT.BORDER | SWT.FULL_SELECTION);
    table_2 = tableViewer_2.getTable();
    table_2.setLinesVisible(true);
    table_2.setHeaderVisible(true);
    GridData gd_table_2 = new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1);
    gd_table_2.heightHint = 120;
    table_2.setLayoutData(gd_table_2);
    formToolkit.paintBordersFor(table_2);

    TableViewerColumn tableViewerColumn_3 = new TableViewerColumn(tableViewer_2, SWT.NONE);
    TableColumn tblclmnNewColumn_3 = tableViewerColumn_3.getColumn();
    tblclmnNewColumn_3.setWidth(360);
    tblclmnNewColumn_3.setText(Messages.SOURCE);
    tableViewerColumn_3.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((Access) element).getOrigin();
        }

    });

    tableViewer_2.setContentProvider(new ArrayContentProvider());
    tableViewer_2.setInput(config.getAccesses());
    tableViewer_2.setColumnProperties(new String[] { "origin" });
    CellEditor[] tableViewer2_editor = new CellEditor[table_2.getColumnCount()];
    tableViewer2_editor[0] = new TextCellEditor(table_2);

    tableViewer_2.setCellEditors(tableViewer2_editor);
    tableViewer_2.setCellModifier(new ICellModifier() {

        @Override
        public boolean canModify(Object element, String property) {

            return true;
        }

        @Override
        public Object getValue(Object element, String property) {
            Object value = ""; //$NON-NLS-1$
            Access access = Access.class.cast(element);
            if (property.equals("origin")) {
                value = access.getOrigin();
            }
            return value;
        }

        @Override
        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            Object o = item.getData();
            Access access = Access.class.cast(o);
            if (property.equals("origin")) {
                if ("".equals(value)) {
                    MessageDialog.openInformation(null, Messages.AddFeatureDialog_INFORMATION,
                            Messages.PERMISSIONISNULL);
                } else {
                    if (!access.getOrigin().equals((String) value)) {
                        access.setOrigin((String) value);
                        dirty = true;
                        firePropertyChange(PROP_DIRTY);
                        tableViewer_2.refresh();
                    }
                }
            }
        }
    });
    scrolledComposite.setMinSize(new Point(700, 1500));
    scrolledComposite.setContent(composite_3);
}

From source file:com.application.areca.launcher.gui.composites.AbstractTargetTreeComposite.java

License:Open Source License

public AbstractTargetTreeComposite(Composite parent, boolean multi, boolean addPath) {
    super(parent, SWT.NONE);
    width = addPath ? 2 : 1;/*w  w w  . ja  va 2  s  .c o  m*/

    GridLayout layout = new GridLayout(width, false);
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    setLayout(layout);

    int style = SWT.BORDER;
    if (multi) {
        style |= SWT.MULTI;
    }

    if (addPath) {
        //          txtPath = new Combo(this, SWT.DROP_DOWN);
        //          txtPath.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
        //          txtPath.setToolTipText(ResourceManager.instance().getLabel("mainpanel.wspath.tt"));
        //          txtPath.addKeyListener(new KeyListener() {
        //            public void keyReleased(KeyEvent arg0) {
        //               if (arg0.character == '\r') {
        //                  Application.getInstance().openWorkspace(txtPath.getText());
        //               }
        //            }
        //            
        //            public void keyPressed(KeyEvent arg0) {
        //            }
        //         });
        //          txtPath.addListener(SWT.Selection, new Listener() {
        //            public void handleEvent(Event arg0) {
        //               Application.getInstance().openWorkspace(txtPath.getText());
        //            }
        //         });
        //          

        //txtPath.setVisible(false);
        workSpaceLabel = new Label(this, SWT.NONE);
        workSpaceLabel.setToolTipText(ResourceManager.instance().getLabel("mainpanel.wspath.tt"));
        workSpaceLabel.setText(ResourceManager.instance().getLabel("common.workspace.label"));
        workSpaceLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));

        //btnWsp = new Button(this, SWT.PUSH);
        //btnWsp.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
        //btnWsp.setText(ResourceManager.instance().getLabel("common.browseaction.label"));
        //btnWsp.setToolTipText(AppActionReferenceHolder.AC_OPEN.getToolTip());
        //btnWsp.addSelectionListener(AppActionReferenceHolder.AC_OPEN);

        //btnWsp.setVisible(false);
        workSpaceValue = new Label(this, SWT.NONE);
        workSpaceValue.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
        //workSpaceValue.setText( Application.getInstance().getMainWindow().get);
        //workSpaceValue.setText(ResourceManager.instance().getLabel("common.browseaction.label"));
        workSpaceValue.setToolTipText(AppActionReferenceHolder.AC_OPEN.getToolTip());
    }

    viewer = new TreeViewer(this, style);
    tree = viewer.getTree();
    tree.addMouseListener(this);
    tree.addListener(SWT.Selection, this);
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, width, 1));

    refresh();
}

From source file:com.application.areca.launcher.gui.composites.ArchiveExplorer.java

License:Open Source License

public ArchiveExplorer(Composite parent, boolean aggregated) {
    super(parent, SWT.NONE);
    try {/*from  w ww  .j  a  va 2s .  c  om*/
        this.aggregated = aggregated;

        setLayout(new FillLayout());
        TreeViewer viewer = new TreeViewer(this, SWT.BORDER | SWT.MULTI);
        tree = viewer.getTree();
        tree.setLinesVisible(AbstractWindow.getTableLinesVisible());
        tree.setHeaderVisible(true);
        tree.addMouseListener(this);
        tree.addListener(SWT.Selection, this);

        TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
        column1.setText(RM.getLabel("mainpanel.name.label"));
        column1.setWidth(AbstractWindow.computeWidth(400));
        TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
        column2.setText(RM.getLabel("mainpanel.size.label"));
        column2.setWidth(AbstractWindow.computeWidth(120));

        viewer.addDoubleClickListener(new IDoubleClickListener() {
            public void doubleClick(DoubleClickEvent event) {
                TreeItem item = tree.getSelection()[0];
                if (item.getExpanded()) {
                    item.setExpanded(false);
                    handleExpansion(item, false);
                } else {
                    handleExpansion(item, true);
                    item.setExpanded(true);
                }
            }
        });

        TreeListener listener = new TreeListener() {
            public void treeCollapsed(TreeEvent arg0) {
                TreeItem item = (TreeItem) arg0.item;
                handleExpansion(item, false);
            }

            public void treeExpanded(TreeEvent event) {
                TreeItem item = (TreeItem) event.item;
                handleExpansion(item, true);
            }
        };
        tree.addTreeListener(listener);
    } catch (RuntimeException e) {
        Application.getInstance().handleException(e);
        throw e;
    }
}