Example usage for org.eclipse.jface.viewers AbstractTreeViewer ALL_LEVELS

List of usage examples for org.eclipse.jface.viewers AbstractTreeViewer ALL_LEVELS

Introduction

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

Prototype

int ALL_LEVELS

To view the source code for org.eclipse.jface.viewers AbstractTreeViewer ALL_LEVELS.

Click Source Link

Document

Constant indicating that all levels of the tree should be expanded or collapsed.

Usage

From source file:org.eclipse.titan.log.viewer.utils.LogFileCacheHandler.java

License:Open Source License

/**
 * Processes the given LogFile if it has changed. The property file, index file, and log record index file will be created.
 * Does nothing if the log file has not changed, or test case extraction is already running on the file.
 * @param logFile The log file/*  w ww  .  jav  a  2  s  .c o  m*/
 * @param pMonitor Progress monitor.
 * @param quietMode If false, the error messages will be displayed to the user.
 * @return true if the processing was successful, false otherwise
 */
public static boolean processLogFile(final IFile logFile, final IProgressMonitor pMonitor,
        final boolean quietMode) {
    IProgressMonitor monitor = pMonitor == null ? new NullProgressMonitor() : pMonitor;

    if (!logFile.exists()) {
        if (!quietMode) {
            TitanLogExceptionHandler
                    .handleException(new UserException("The log file does not exist: " + logFile.getName())); //$NON-NLS-1$
        }
        return false;
    }

    try {
        Object temp = logFile.getSessionProperty(Constants.EXTRACTION_RUNNING);
        if (temp != null && (Boolean) temp) {
            if (!quietMode) {
                TitanLogExceptionHandler.handleException(new TechnicalException(
                        "Test case extraction is running on the given logfile: " + logFile.getName())); //$NON-NLS-1$
            }
            return false;
        }
    } catch (CoreException e) {
        ErrorReporter.logExceptionStackTrace(e);
        TitanLogExceptionHandler.handleException(new UserException(e.getMessage()));
        return false;
    }

    if (!LogFileCacheHandler.hasLogFileChanged(logFile)) {
        return true;
    }

    try {
        logFile.setSessionProperty(Constants.EXTRACTION_RUNNING, true);
    } catch (CoreException e) {
        ErrorReporter.logExceptionStackTrace(e);
        return false;
    }

    final LogFileHandler logFileHandler = new LogFileHandler(logFile);

    try {
        LogFileMetaData logFileMetaData = logFileHandler.autoDetect();

        final TestCaseExtractor testCaseExtractor = new TestCaseExtractor();
        testCaseExtractor.extractTestCasesFromLogFile(logFileMetaData, monitor);

        if (monitor.isCanceled()) {
            Display.getDefault().asyncExec(new Runnable() {
                @Override
                public void run() {
                    final IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
                            .getActivePage();
                    IViewPart view = activePage.findView("org.eclipse.ui.navigator.ProjectExplorer");

                    if (view instanceof CommonNavigator) {
                        CommonNavigator navigator = (CommonNavigator) view;
                        navigator.getCommonViewer().update(logFile, null);
                        navigator.getCommonViewer().collapseToLevel(logFile, AbstractTreeViewer.ALL_LEVELS);
                    }
                }
            });
            return false;
        }

        fillCache(logFile, logFileMetaData, testCaseExtractor.getTestCases(),
                testCaseExtractor.getLogRecordIndexes());

        Display.getDefault().asyncExec(new Runnable() {
            @Override
            public void run() {
                final IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
                        .getActivePage();
                IViewPart view = activePage.findView("org.eclipse.ui.navigator.ProjectExplorer");

                if (view instanceof CommonNavigator) {
                    CommonNavigator navigator = (CommonNavigator) view;
                    navigator.getCommonViewer().refresh(logFile, true);
                    navigator.getCommonViewer().expandToLevel(logFile, AbstractTreeViewer.ALL_LEVELS);
                }
            }
        });

        if (testCaseExtractor.failedDuringExtraction()) {
            Display.getDefault().asyncExec(new Runnable() {
                @Override
                public void run() {
                    MessageDialog.openInformation(null,
                            Messages.getString("OpenTextTableProjectsViewMenuAction.8"),
                            Messages.getString("OpenTextTableProjectsViewMenuAction.9"));
                }
            });
            return false;
        }

    } catch (IOException e) {
        if (!quietMode) {
            ErrorReporter.logExceptionStackTrace(e);
            TitanLogExceptionHandler.handleException(new TechnicalException(
                    Messages.getString("OpenTextTableProjectsViewMenuAction.2") + e.getMessage())); //$NON-NLS-1$
        }
        return false;
    } catch (TechnicalException e) { // invalid file format
        if (!quietMode) {
            MessageDialog.openError(Display.getDefault().getActiveShell(), "Invalid log file", e.getMessage());
        }
        return false;
    } finally {
        try {
            logFile.setSessionProperty(Constants.EXTRACTION_RUNNING, false);
        } catch (CoreException e) {
            ErrorReporter.logExceptionStackTrace(e);
        }
    }

    return true;
}

From source file:org.eclipse.titan.log.viewer.views.navigator.LogFileContentProvider.java

License:Open Source License

@Override
public Object[] getChildren(final Object parentElement) {
    Object[] emptyResult = new Object[] {};
    if (!(parentElement instanceof IFile)) {
        return emptyResult;
    }//from  w ww  .j  a va2  s.c  o m

    final IFile logFile = (IFile) parentElement;
    if (!logFile.exists()) {
        return emptyResult;
    }
    String fileExtension = logFile.getFileExtension();
    if (fileExtension == null || !fileExtension.equals(Constants.LOG_EXTENSION)) {
        return emptyResult;
    }

    try {
        Object temp = logFile.getSessionProperty(Constants.EXTRACTION_RUNNING);
        if (temp != null && (Boolean) temp) {
            return emptyResult;
        }
    } catch (CoreException e) {
        ErrorReporter.logExceptionStackTrace(e);
        TitanLogExceptionHandler.handleException(new UserException(e.getMessage()));
    }

    if (LogFileCacheHandler.hasLogFileChanged(logFile)) {
        handleLogFileChange(logFile);
        return emptyResult;
    }

    try {
        final TestCaseExtractor extractor = new TestCaseExtractor();
        extractor.extractTestCasesFromIndexedLogFile(logFile);
        Display.getDefault().asyncExec(new Runnable() {
            @Override
            public void run() {
                IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
                        .getActivePage();
                IViewPart view = activePage.findView("org.eclipse.ui.navigator.ProjectExplorer");
                if (view instanceof CommonNavigator) {
                    CommonViewer viewer = ((CommonNavigator) view).getCommonViewer();
                    for (TestCase testCase : extractor.getTestCases()) {
                        viewer.expandToLevel(testCase, AbstractTreeViewer.ALL_LEVELS);
                        viewer.refresh(testCase, true);
                    }
                }
            }
        });
        return extractor.getTestCases().toArray();
    } catch (Exception e) {
        LogFileCacheHandler.clearCache(logFile);
        ErrorReporter.logExceptionStackTrace(e);
        return emptyResult;
    }
}

From source file:org.eclipse.tracecompass.extension.internal.callstack.ui.views.stacktable.CallStackTableView.java

License:Open Source License

@Override
public void createPartControl(@Nullable Composite parent) {
    super.createPartControl(parent);
    SashForm sf = new SashForm(parent, SWT.NONE);
    /* Build the tree viewer part of the view */
    TreeViewer treeViewer = new TreeViewer(sf, SWT.FULL_SELECTION | SWT.H_SCROLL);
    fTreeViewer = treeViewer;/*from www.j  a v  a  2s.c  o m*/
    treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    final Tree tree = treeViewer.getTree();
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    TreeViewerColumn column = new TreeViewerColumn(treeViewer, SWT.LEFT);
    column.getColumn().setText("CallSite");
    column.getColumn().setWidth(50);
    treeViewer.setContentProvider(new TreeContentProvider());
    treeViewer.setLabelProvider(new TreeLabelProvider());
}

From source file:org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.preferences.RemoteProfilesPreferencePage.java

License:Open Source License

@Override
protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    composite.setLayoutData(gd);/*from  ww w. ja  v a 2s  .c  o  m*/

    GridLayout gl = new GridLayout(2, false);
    composite.setLayout(gl);

    PatternFilter patternFilter = new PatternFilter() {
        // show all children of matching profiles or profiles with matching connection node
        @Override
        protected boolean isLeafMatch(Viewer viewer, Object element) {
            TreeViewer treeViewer = (TreeViewer) viewer;
            TracePackageContentProvider contentProvider = (TracePackageContentProvider) treeViewer
                    .getContentProvider();
            Object parentElement = element;
            while (!(parentElement instanceof RemoteImportProfileElement)) {
                parentElement = contentProvider.getParent(parentElement);
                if (parentElement instanceof TracePackageTraceElement) {
                    // don't show children of trace element
                    return false;
                }
            }
            RemoteImportProfileElement profile = (RemoteImportProfileElement) parentElement;
            if (super.isLeafMatch(viewer, profile)) {
                return true;
            }
            for (Object child : contentProvider.getChildren(profile)) {
                if ((child instanceof RemoteImportConnectionNodeElement)
                        && (super.isLeafMatch(viewer, child))) {
                    return true;
                }
            }
            return false;
        }
    };

    final FilteredTree filteredTree = new FilteredTree(composite,
            SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, patternFilter, true);
    gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.heightHint = 0;
    filteredTree.setLayoutData(gd);
    final TreeViewer treeViewer = filteredTree.getViewer();
    fTreeViewer = treeViewer;

    treeViewer.setContentProvider(new TracePackageContentProvider() {
        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof ArrayList) {
                return ((ArrayList<?>) inputElement).toArray();
            }
            return super.getElements(inputElement);
        }

        @Override
        public boolean hasChildren(Object element) {
            if (element instanceof TracePackageTraceElement) {
                return false;
            }
            return super.hasChildren(element);
        }
    });

    treeViewer.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof TracePackageTraceElement) {
                for (TracePackageElement files : ((TracePackageTraceElement) element).getChildren()) {
                    if (files instanceof TracePackageFilesElement) {
                        return ((TracePackageFilesElement) files).getFileName();
                    }
                }
            } else if (element instanceof TracePackageElement) {
                return ((TracePackageElement) element).getText();
            }
            return super.getText(element);
        }

        @Override
        public Image getImage(Object element) {
            if (element instanceof TracePackageTraceElement) {
                for (TracePackageElement files : ((TracePackageTraceElement) element).getChildren()) {
                    return files.getImage();
                }
            } else if (element instanceof TracePackageElement) {
                return ((TracePackageElement) element).getImage();
            }
            return super.getImage(element);
        }
    });

    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            TracePackageElement element = (TracePackageElement) (selection.size() == 1
                    ? selection.getFirstElement()
                    : null);
            fDetailsPanel.refreshDetailsPanel(element);
            enableButtons(selection);
            fSelectedProfileName = null;
            while (element != null) {
                if (element instanceof RemoteImportProfileElement) {
                    fSelectedProfileName = ((RemoteImportProfileElement) element).getProfileName();
                }
                element = element.getParent();
            }
        }
    });

    createGlobalActions();
    createContextMenu();

    fProfiles = readProfiles(PROFILE_FILE_PATH, new NullProgressMonitor());

    treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    treeViewer.setInput(fProfiles);
    treeViewer.expandAll();

    Composite buttonBar = createVerticalButtonBar(composite);
    gd = new GridData(SWT.CENTER, SWT.BEGINNING, false, false);
    gd.verticalIndent = filteredTree.getFilterControl().computeSize(SWT.DEFAULT, SWT.DEFAULT).y
            + gl.verticalSpacing;
    buttonBar.setLayoutData(gd);
    enableButtons((IStructuredSelection) treeViewer.getSelection());

    Composite details = new Composite(composite, SWT.NONE);
    gd = new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1);
    details.setLayoutData(gd);
    gl = new GridLayout(2, false);
    gl.marginWidth = 0;
    details.setLayout(gl);

    Label label = new Label(details, SWT.NONE);
    label.setText(RemoteMessages.RemoteProfilesPreferencePage_DetailsPanelLabel);
    gd = new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1);
    label.setLayoutData(gd);

    fDetailsPanel = new DetailsPanel(details);

    validate();

    for (RemoteImportProfileElement profile : fProfiles) {
        if (profile.getProfileName().equals(fSelectedProfileName)) {
            fTreeViewer.setSelection(new StructuredSelection(profile));
        }
    }

    Dialog.applyDialogFont(composite);
    return composite;
}

From source file:org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.preferences.RemoteProfilesPreferencePage.java

License:Open Source License

private void createGlobalActions() {
    fDeleteAction = new Action(RemoteMessages.RemoteProfilesPreferencePage_DeleteAction) {
        @Override//from  w w  w.j  av a2s  .  c om
        public void run() {
            final IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            if (selection.size() == 0) {
                return;
            }
            for (Object item : selection.toList()) {
                removeElement(item);
            }
        }
    };
    fDeleteAction.setImageDescriptor(
            PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
    fDeleteAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_DELETE);
    fDeleteAction.setAccelerator(SWT.DEL);

    fCutAction = new Action(RemoteMessages.RemoteProfilesPreferencePage_CutAction) {
        @Override
        public void run() {
            final IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            if (selection.size() != 1) {
                return;
            }
            setClipboardContents(selection);
            Object item = selection.getFirstElement();
            removeElement(item);
        }
    };
    fCutAction.setImageDescriptor(
            PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_CUT));
    fCutAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_CUT);
    fCutAction.setAccelerator(SWT.CTRL | 'X');

    fCopyAction = new Action(RemoteMessages.RemoteProfilesPreferencePage_CopyAction) {
        @Override
        public void run() {
            final IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            if (selection.size() != 1) {
                return;
            }
            setClipboardContents(new StructuredSelection(
                    copyElement(null, (TracePackageElement) selection.getFirstElement())));
        }
    };
    fCopyAction.setImageDescriptor(
            PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
    fCopyAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_COPY);
    fCopyAction.setAccelerator(SWT.CTRL | 'C');

    fPasteAction = new Action(RemoteMessages.RemoteProfilesPreferencePage_PasteAction) {
        @Override
        public void run() {
            final IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            if (selection.size() > 1) {
                return;
            }
            if (!validatePaste(selection.getFirstElement())) {
                return;
            }
            IStructuredSelection data = getClipboardContents();
            data = getClipboardContents();
            if (data == null) {
                return;
            }
            for (Object object : data.toArray()) {
                if (object instanceof RemoteImportProfileElement) {
                    TracePackageElement element = copyElement(null, (TracePackageElement) object);
                    TracePackageElement target = (TracePackageElement) selection.getFirstElement();
                    if (target == null) {
                        fProfiles.add((RemoteImportProfileElement) element);
                    } else {
                        int index = fProfiles.indexOf(target);
                        fProfiles.add(index + 1, (RemoteImportProfileElement) element);
                    }
                    Object[] expanded = fTreeViewer.getExpandedElements();
                    fTreeViewer.refresh();
                    fTreeViewer.setExpandedElements(expanded);
                    fTreeViewer.expandToLevel(element, AbstractTreeViewer.ALL_LEVELS);
                    fTreeViewer.setSelection(new StructuredSelection(element));
                    validate();
                } else if (object instanceof TracePackageElement
                        && selection.getFirstElement() instanceof TracePackageElement) {
                    TracePackageElement element = copyElement(null, (TracePackageElement) object);
                    TracePackageElement target = (TracePackageElement) selection.getFirstElement();
                    if (target.getClass().equals(element.getClass())) {
                        int index = target.getParent().indexOf(target);
                        target.getParent().addChild(index + 1, element);
                        fTreeViewer.refresh(target.getParent());
                    } else {
                        target.addChild(0, element);
                        fTreeViewer.refresh(target);
                    }
                    fTreeViewer.expandToLevel(element, AbstractTreeViewer.ALL_LEVELS);
                    fTreeViewer.setSelection(new StructuredSelection(element));
                    validate();
                }
            }
        }
    };
    fPasteAction.setImageDescriptor(
            PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
    fPasteAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_PASTE);
    fPasteAction.setAccelerator(SWT.CTRL | 'V');

    fTreeViewer.getTree().addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.stateMask == 0 && e.keyCode == SWT.DEL) {
                fDeleteAction.run();
            }
            if ((e.stateMask & SWT.CTRL) == SWT.CTRL) {
                if (e.keyCode == 'x') {
                    fCutAction.run();
                } else if (e.keyCode == 'c') {
                    fCopyAction.run();
                } else if (e.keyCode == 'v') {
                    fPasteAction.run();
                }
            }
        }
    });
}

From source file:org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.preferences.RemoteProfilesPreferencePage.java

License:Open Source License

private Composite createVerticalButtonBar(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout());

    fAddButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_AddButton);
    fAddButton.addSelectionListener(new SelectionAdapter() {
        @Override//from w w w. jav a2s  .c o m
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            if (selection.isEmpty()) {
                newProfile(null);
            } else if (selection.getFirstElement() instanceof TracePackageElement) {
                TracePackageElement previous = (TracePackageElement) selection.getFirstElement();
                if (previous instanceof RemoteImportProfileElement) {
                    newProfile(previous);
                } else if (previous instanceof RemoteImportConnectionNodeElement) {
                    newConnectionNode(previous.getParent(), previous);
                } else if (previous instanceof RemoteImportTraceGroupElement) {
                    newTraceGroup(previous.getParent(), previous);
                } else if (previous instanceof TracePackageTraceElement) {
                    newTrace(previous.getParent(), previous);
                }
            }
        }
    });

    fRemoveButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_RemoveButton);
    fRemoveButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            for (Object item : selection.toList()) {
                if (item instanceof RemoteImportProfileElement) {
                    fProfiles.remove(item);
                } else if (item instanceof TracePackageElement) {
                    TracePackageElement element = (TracePackageElement) item;
                    element.getParent().removeChild(element);
                }
            }
            fTreeViewer.refresh();
            validate();
        }
    });

    new Label(composite, SWT.NONE);

    fImportButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_ImportButton);
    fImportButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell(), SWT.OPEN);
            dialog.setText(RemoteMessages.RemoteProfilesPreferencePage_ImportFileDialogTitle);
            dialog.setFilterExtensions(new String[] { "*.xml", "*" }); //$NON-NLS-1$ //$NON-NLS-2$
            String path = dialog.open();
            if (path != null) {
                List<RemoteImportProfileElement> profiles = readProfiles(path, new NullProgressMonitor());
                fProfiles.addAll(profiles);
                fTreeViewer.refresh();
                for (RemoteImportProfileElement profile : profiles) {
                    fTreeViewer.expandToLevel(profile, AbstractTreeViewer.ALL_LEVELS);
                }
                fTreeViewer.setSelection(new StructuredSelection(profiles));
                validate();
            }
        }
    });

    fExportButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_ExportButton);
    fExportButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell(), SWT.SAVE);
            dialog.setText(RemoteMessages.RemoteProfilesPreferencePage_ExportFileDialogTitle);
            dialog.setFilterExtensions(new String[] { "*.xml", "*" }); //$NON-NLS-1$ //$NON-NLS-2$
            String path = dialog.open();
            if (path != null) {
                IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
                List<RemoteImportProfileElement> profiles = new ArrayList<>();
                for (Object element : selection.toList()) {
                    if (element instanceof RemoteImportProfileElement) {
                        profiles.add((RemoteImportProfileElement) element);
                    }
                }
                writeProfiles(profiles, path);
            }
        }
    });

    new Label(composite, SWT.NONE);

    fMoveUpButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_MoveUpButton);
    fMoveUpButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            Object element = selection.getFirstElement();
            if (element instanceof RemoteImportProfileElement) {
                int index = fProfiles.indexOf(element);
                if (index > 0) {
                    RemoteImportProfileElement profile = fProfiles.remove(index);
                    fProfiles.add(index - 1, profile);
                    Object[] expanded = fTreeViewer.getExpandedElements();
                    fTreeViewer.refresh();
                    fTreeViewer.setExpandedElements(expanded);
                    enableButtons(selection);
                }
            } else if (element instanceof TracePackageElement) {
                TracePackageElement child = (TracePackageElement) element;
                TracePackageElement parentElement = child.getParent();
                int index = parentElement.indexOf(child);
                if (index > 0) {
                    parentElement.removeChild(child);
                    parentElement.addChild(index - 1, child);
                    Object[] expanded = fTreeViewer.getExpandedElements();
                    fTreeViewer.refresh(parentElement);
                    fTreeViewer.setExpandedElements(expanded);
                    enableButtons(selection);
                }
            }
        }
    });

    fMoveDownButton = createVerticalButton(composite,
            RemoteMessages.RemoteProfilesPreferencePage_MoveDownButton);
    fMoveDownButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            Object element = selection.getFirstElement();
            if (element instanceof RemoteImportProfileElement) {
                int index = fProfiles.indexOf(selection.getFirstElement());
                if (index >= 0 && index < fProfiles.size() - 1) {
                    RemoteImportProfileElement profile = fProfiles.remove(index);
                    fProfiles.add(index + 1, profile);
                    Object[] expanded = fTreeViewer.getExpandedElements();
                    fTreeViewer.refresh();
                    fTreeViewer.setExpandedElements(expanded);
                    enableButtons(selection);
                }
            } else if (element instanceof TracePackageElement) {
                TracePackageElement child = (TracePackageElement) element;
                TracePackageElement parentElement = child.getParent();
                int index = parentElement.indexOf(child);
                if (index >= 0 && index < parentElement.getChildren().length - 1) {
                    parentElement.removeChild(child);
                    parentElement.addChild(index + 1, child);
                    Object[] expanded = fTreeViewer.getExpandedElements();
                    fTreeViewer.refresh(parentElement);
                    fTreeViewer.setExpandedElements(expanded);
                    enableButtons(selection);
                }
            }
        }
    });

    return composite;
}

From source file:org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.preferences.RemoteProfilesPreferencePage.java

License:Open Source License

private void newElementAdded(TracePackageElement element) {
    if (element.getParent() != null) {
        fTreeViewer.refresh(element.getParent());
    } else {//from   www. j  av  a2s  .  com
        fTreeViewer.refresh();
    }
    fTreeViewer.expandToLevel(element, AbstractTreeViewer.ALL_LEVELS);
    fTreeViewer.setSelection(new StructuredSelection(element));
    validate();
}

From source file:org.eclipse.tracecompass.internal.tmf.ui.parsers.wizards.CustomXmlParserInputWizardPage.java

License:Open Source License

private void createButtonBar() {
    Composite buttonBar = new Composite(container, SWT.NONE);
    GridLayout buttonBarLayout = new GridLayout(6, false);
    buttonBarLayout.marginHeight = 0;//from www .  ja  v a  2 s  . c om
    buttonBarLayout.marginWidth = 0;
    buttonBar.setLayout(buttonBarLayout);

    removeButton = new Button(buttonBar, SWT.PUSH);
    removeButton.setImage(DELETE_IMAGE);
    removeButton.setToolTipText(Messages.CustomXmlParserInputWizardPage_removeElement);
    removeButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (treeViewer.getSelection().isEmpty() || selectedElement == null) {
                return;
            }
            removeElement();
            CustomXmlInputElement inputElement = (CustomXmlInputElement) ((IStructuredSelection) treeViewer
                    .getSelection()).getFirstElement();
            if (inputElement == definition.rootInputElement) {
                definition.rootInputElement = null;
            } else {
                inputElement.getParentElement().getChildElements().remove(inputElement);
            }
            treeViewer.refresh();
            validate();
            updatePreviews();
            removeButton.setEnabled(false);
            if (definition.rootInputElement == null) {
                addChildButton.setEnabled(true);
                addChildButton.setToolTipText(Messages.CustomXmlParserInputWizardPage_addDocumentEleemnt);
            } else {
                addChildButton.setEnabled(false);
            }
            addNextButton.setEnabled(false);
            moveUpButton.setEnabled(false);
            moveDownButton.setEnabled(false);
        }
    });

    addChildButton = new Button(buttonBar, SWT.PUSH);
    addChildButton.setImage(ADD_CHILD_IMAGE);
    addChildButton.setToolTipText(Messages.CustomXmlParserInputWizardPage_addChildElement);
    addChildButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CustomXmlInputElement inputElement = new CustomXmlInputElement("", false, //$NON-NLS-1$
                    CustomXmlTraceDefinition.TAG_IGNORE, 0, "", null); //$NON-NLS-1$
            if (definition.rootInputElement == null) {
                definition.rootInputElement = inputElement;
                inputElement.setElementName(getChildNameSuggestion(null));
            } else if (treeViewer.getSelection().isEmpty()) {
                return;
            } else {
                CustomXmlInputElement parentInputElement = (CustomXmlInputElement) ((IStructuredSelection) treeViewer
                        .getSelection()).getFirstElement();
                parentInputElement.addChild(inputElement);
                inputElement.setElementName(getChildNameSuggestion(parentInputElement));
            }
            treeViewer.refresh();
            treeViewer.setSelection(new StructuredSelection(inputElement), true);
        }
    });

    addNextButton = new Button(buttonBar, SWT.PUSH);
    addNextButton.setImage(ADD_NEXT_IMAGE);
    addNextButton.setToolTipText(Messages.CustomXmlParserInputWizardPage_addNextElement);
    addNextButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CustomXmlInputElement inputElement = new CustomXmlInputElement("", false, //$NON-NLS-1$
                    CustomXmlTraceDefinition.TAG_IGNORE, 0, "", null); //$NON-NLS-1$
            if (definition.rootInputElement == null) {
                definition.rootInputElement = inputElement;
                inputElement.setElementName(getChildNameSuggestion(null));
            } else if (treeViewer.getSelection().isEmpty()) {
                return;
            } else {
                CustomXmlInputElement previousInputElement = (CustomXmlInputElement) ((IStructuredSelection) treeViewer
                        .getSelection()).getFirstElement();
                if (previousInputElement == definition.rootInputElement) {
                    return;
                }
                previousInputElement.addNext(inputElement);
                inputElement.setElementName(getChildNameSuggestion(inputElement.getParentElement()));
            }
            treeViewer.refresh();
            treeViewer.setSelection(new StructuredSelection(inputElement), true);
        }
    });

    Button feelingLuckyButton = new Button(buttonBar, SWT.PUSH);
    feelingLuckyButton.setImage(ADD_MANY_IMAGE);
    feelingLuckyButton.setToolTipText(Messages.CustomXmlParserInputWizardPage_feelingLucky);
    feelingLuckyButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CustomXmlInputElement inputElement = null;
            if (definition.rootInputElement == null) {
                if (getChildNameSuggestion(null).length() != 0) {
                    inputElement = new CustomXmlInputElement(getChildNameSuggestion(null), false,
                            CustomXmlTraceDefinition.TAG_IGNORE, 0, "", null); //$NON-NLS-1$
                    definition.rootInputElement = inputElement;
                    feelingLucky(inputElement);
                } else {
                    return;
                }
            } else if (treeViewer.getSelection().isEmpty()) {
                return;
            } else {
                inputElement = (CustomXmlInputElement) ((IStructuredSelection) treeViewer.getSelection())
                        .getFirstElement();
                feelingLucky(inputElement);
            }
            treeViewer.refresh();
            treeViewer.setSelection(new StructuredSelection(inputElement), true);
            treeViewer.expandToLevel(inputElement, AbstractTreeViewer.ALL_LEVELS);
        }
    });

    moveUpButton = new Button(buttonBar, SWT.PUSH);
    moveUpButton.setImage(MOVE_UP_IMAGE);
    moveUpButton.setToolTipText(Messages.CustomXmlParserInputWizardPage_moveUp);
    moveUpButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (treeViewer.getSelection().isEmpty()) {
                return;
            }
            CustomXmlInputElement inputElement = (CustomXmlInputElement) ((IStructuredSelection) treeViewer
                    .getSelection()).getFirstElement();
            if (inputElement == definition.rootInputElement) {
                return;
            }
            inputElement.moveUp();
            treeViewer.refresh();
            validate();
            updatePreviews();
        }
    });

    moveDownButton = new Button(buttonBar, SWT.PUSH);
    moveDownButton.setImage(MOVE_DOWN_IMAGE);
    moveDownButton.setToolTipText(Messages.CustomXmlParserInputWizardPage_moveDown);
    moveDownButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (treeViewer.getSelection().isEmpty()) {
                return;
            }
            CustomXmlInputElement inputElement = (CustomXmlInputElement) ((IStructuredSelection) treeViewer
                    .getSelection()).getFirstElement();
            if (inputElement == definition.rootInputElement) {
                return;
            }
            inputElement.moveDown();
            treeViewer.refresh();
            validate();
            updatePreviews();
        }
    });
}

From source file:org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphCombo.java

License:Open Source License

/**
 * Constructs a new instance of this class given its parent and a style
 * value describing its behavior and appearance.
 *
 * @param parent// w w w.  j  a  va2s  .  c  om
 *            a widget which will be the parent of the new instance (cannot
 *            be null)
 * @param style
 *            the style of widget to construct
 * @param weights
 *            The array (length 2) of relative weights of each side of the sash form
 */
public TimeGraphCombo(Composite parent, int style, int[] weights) {
    super(parent, style);
    setLayout(new FillLayout());

    fSashForm = new SashForm(this, SWT.NONE);

    fTreeViewer = new TreeViewer(fSashForm, SWT.FULL_SELECTION | SWT.H_SCROLL);
    fTreeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    final Tree tree = fTreeViewer.getTree();
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);

    fTimeGraphViewer = new TimeGraphViewer(fSashForm, SWT.NONE);
    fTimeGraphViewer.setItemHeight(getItemHeight(tree));
    fTimeGraphViewer.setHeaderHeight(tree.getHeaderHeight());
    fTimeGraphViewer.setBorderWidth(tree.getBorderWidth());
    fTimeGraphViewer.setNameWidthPref(0);

    fFilter = new RawViewerFilter();
    addFilter(fFilter);

    fFilterDialog = new TimeGraphFilterDialog(getShell());

    // Feature in Windows. The tree vertical bar reappears when
    // the control is resized so we need to hide it again.
    tree.addControlListener(new ControlAdapter() {
        private int depth = 0;

        @Override
        public void controlResized(ControlEvent e) {
            if (depth == 0) {
                depth++;
                tree.getVerticalBar().setEnabled(false);
                // this can trigger controlResized recursively
                tree.getVerticalBar().setVisible(false);
                depth--;
            }
        }
    });
    // Bug in Linux. The tree header height is 0 in constructor,
    // so we need to reset it later when the control is painted.
    // This work around used to be done on control resized but the header
    // height was not initialized on the initial resize on GTK3.
    tree.addPaintListener(new PaintListener() {
        @Override
        public void paintControl(PaintEvent e) {
            int headerHeight = tree.getHeaderHeight();
            if (headerHeight > 0) {
                fTimeGraphViewer.setHeaderHeight(headerHeight);
                tree.removePaintListener(this);
            }
        }
    });

    // ensure synchronization of expanded items between tree and time graph
    fTreeViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            fTimeGraphViewer.setExpandedState((ITimeGraphEntry) event.getElement(), false);
            // queue the alignment update because the tree items may only be
            // actually collapsed after the listeners have been notified
            fVisibleExpandedItems = null; // invalidate the cache
            getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    alignTreeItems(true);
                }
            });
        }

        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ITimeGraphEntry entry = (ITimeGraphEntry) event.getElement();
            fTimeGraphViewer.setExpandedState(entry, true);
            Set<Object> expandedElements = new HashSet<>(Arrays.asList(fTreeViewer.getExpandedElements()));
            for (ITimeGraphEntry child : entry.getChildren()) {
                if (child.hasChildren()) {
                    boolean expanded = expandedElements.contains(child);
                    fTimeGraphViewer.setExpandedState(child, expanded);
                }
            }
            // queue the alignment update because the tree items may only be
            // actually expanded after the listeners have been notified
            fVisibleExpandedItems = null; // invalidate the cache
            getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    alignTreeItems(true);
                }
            });
        }
    });

    // ensure synchronization of expanded items between tree and time graph
    fTimeGraphViewer.addTreeListener(new ITimeGraphTreeListener() {
        @Override
        public void treeCollapsed(TimeGraphTreeExpansionEvent event) {
            fTreeViewer.setExpandedState(event.getEntry(), false);
            alignTreeItems(true);
        }

        @Override
        public void treeExpanded(TimeGraphTreeExpansionEvent event) {
            ITimeGraphEntry entry = event.getEntry();
            fTreeViewer.setExpandedState(entry, true);
            Set<Object> expandedElements = new HashSet<>(Arrays.asList(fTreeViewer.getExpandedElements()));
            for (ITimeGraphEntry child : entry.getChildren()) {
                if (child.hasChildren()) {
                    boolean expanded = expandedElements.contains(child);
                    fTimeGraphViewer.setExpandedState(child, expanded);
                }
            }
            alignTreeItems(true);
        }
    });

    // prevent mouse button from selecting a filler tree item
    tree.addListener(SWT.MouseDown, new Listener() {
        @Override
        public void handleEvent(Event event) {
            TreeItem treeItem = tree.getItem(new Point(event.x, event.y));
            if (treeItem == null || treeItem.getData() == FILLER) {
                event.doit = false;
                List<TreeItem> treeItems = getVisibleExpandedItems(tree, false);
                if (treeItems.size() == 0) {
                    fTreeViewer.setSelection(new StructuredSelection());
                    fTimeGraphViewer.setSelection(null);
                    return;
                }
                // this prevents from scrolling up when selecting
                // the partially visible tree item at the bottom
                tree.select(treeItems.get(treeItems.size() - 1));
                fTreeViewer.setSelection(new StructuredSelection());
                fTimeGraphViewer.setSelection(null);
            }
        }
    });

    // prevent mouse wheel from scrolling down into filler tree items
    tree.addListener(SWT.MouseWheel, new Listener() {
        @Override
        public void handleEvent(Event event) {
            event.doit = false;
            Slider scrollBar = fTimeGraphViewer.getVerticalBar();
            fTimeGraphViewer.setTopIndex(scrollBar.getSelection() - event.count);
            alignTreeItems(false);
        }
    });

    // prevent key stroke from selecting a filler tree item
    tree.addListener(SWT.KeyDown, new Listener() {
        @Override
        public void handleEvent(Event event) {
            List<TreeItem> treeItems = getVisibleExpandedItems(tree, false);
            if (treeItems.size() == 0) {
                fTreeViewer.setSelection(new StructuredSelection());
                event.doit = false;
                return;
            }
            if (event.keyCode == SWT.ARROW_DOWN) {
                int index = Math.min(fTimeGraphViewer.getSelectionIndex() + 1, treeItems.size() - 1);
                fTimeGraphViewer.setSelection((ITimeGraphEntry) treeItems.get(index).getData());
                event.doit = false;
            } else if (event.keyCode == SWT.PAGE_DOWN) {
                int height = tree.getSize().y - tree.getHeaderHeight() - tree.getHorizontalBar().getSize().y;
                int countPerPage = height / getItemHeight(tree);
                int index = Math.min(fTimeGraphViewer.getSelectionIndex() + countPerPage - 1,
                        treeItems.size() - 1);
                fTimeGraphViewer.setSelection((ITimeGraphEntry) treeItems.get(index).getData());
                event.doit = false;
            } else if (event.keyCode == SWT.END) {
                fTimeGraphViewer.setSelection((ITimeGraphEntry) treeItems.get(treeItems.size() - 1).getData());
                event.doit = false;
            }
            if (fTimeGraphViewer.getSelectionIndex() >= 0) {
                fTreeViewer.setSelection(new StructuredSelection(fTimeGraphViewer.getSelection()));
            } else {
                fTreeViewer.setSelection(new StructuredSelection());
            }
            alignTreeItems(false);
        }
    });

    // ensure alignment of top item between tree and time graph
    fTimeGraphViewer.getTimeGraphControl().addControlListener(new ControlAdapter() {
        @Override
        public void controlResized(ControlEvent e) {
            alignTreeItems(false);
        }
    });

    // ensure synchronization of selected item between tree and time graph
    fTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (fInhibitTreeSelection) {
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                Object selection = ((IStructuredSelection) event.getSelection()).getFirstElement();
                if (selection instanceof ITimeGraphEntry) {
                    fTimeGraphViewer.setSelection((ITimeGraphEntry) selection);
                }
                alignTreeItems(false);
            }
        }
    });

    // ensure synchronization of selected item between tree and time graph
    fTimeGraphViewer.addSelectionListener(new ITimeGraphSelectionListener() {
        @Override
        public void selectionChanged(TimeGraphSelectionEvent event) {
            ITimeGraphEntry entry = fTimeGraphViewer.getSelection();
            fInhibitTreeSelection = true; // block the tree selection changed listener
            if (entry != null) {
                StructuredSelection selection = new StructuredSelection(entry);
                fTreeViewer.setSelection(selection);
            } else {
                fTreeViewer.setSelection(new StructuredSelection());
            }
            fInhibitTreeSelection = false;
            alignTreeItems(false);
        }
    });

    // ensure alignment of top item between tree and time graph
    fTimeGraphViewer.getVerticalBar().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            alignTreeItems(false);
        }
    });

    // ensure alignment of top item between tree and time graph
    fTimeGraphViewer.getTimeGraphControl().addMouseWheelListener(new MouseWheelListener() {
        @Override
        public void mouseScrolled(MouseEvent e) {
            alignTreeItems(false);
        }
    });

    // ensure the tree has focus control when mouse is over it if the time graph had control
    fTreeViewer.getControl().addMouseTrackListener(new MouseTrackAdapter() {
        @Override
        public void mouseEnter(MouseEvent e) {
            if (fTimeGraphViewer.getTimeGraphControl().isFocusControl()) {
                fTreeViewer.getControl().setFocus();
            }
        }
    });

    // ensure the time graph has focus control when mouse is over it if the tree had control
    fTimeGraphViewer.getTimeGraphControl().addMouseTrackListener(new MouseTrackAdapter() {
        @Override
        public void mouseEnter(MouseEvent e) {
            if (fTreeViewer.getControl().isFocusControl()) {
                fTimeGraphViewer.getTimeGraphControl().setFocus();
            }
        }
    });
    fTimeGraphViewer.getTimeGraphScale().addMouseTrackListener(new MouseTrackAdapter() {
        @Override
        public void mouseEnter(MouseEvent e) {
            if (fTreeViewer.getControl().isFocusControl()) {
                fTimeGraphViewer.getTimeGraphControl().setFocus();
            }
        }
    });

    // The filler rows are required to ensure alignment when the tree does not have a
    // visible horizontal scroll bar. The tree does not allow its top item to be set
    // to a value that would cause blank space to be drawn at the bottom of the tree.
    fNumFillerRows = Display.getDefault().getBounds().height / getItemHeight(tree);

    fSashForm.setWeights(weights);

    fTimeGraphViewer.getTimeGraphControl().addPaintListener(new PaintListener() {
        @Override
        public void paintControl(PaintEvent e) {
            // Sashes in a SashForm are being created on layout so add the
            // drag listener here
            if (fSashDragListener == null) {
                for (Control control : fSashForm.getChildren()) {
                    if (control instanceof Sash) {
                        fSashDragListener = new Listener() {

                            @Override
                            public void handleEvent(Event event) {
                                sendTimeViewAlignmentChanged();

                            }
                        };
                        control.removePaintListener(this);
                        control.addListener(SWT.Selection, fSashDragListener);
                        // There should be only one sash
                        break;
                    }
                }
            }
        }
    });
}

From source file:org.eclipse.ui.internal.activities.ws.ActivityEnabler.java

License:Open Source License

/**
 * Toggles the enablement state of all activities.
 * /*from   w  w  w. j  av a2 s  .c o  m*/
 * @param enabled
 *            whether the tree should be enabled
 */
protected void toggleTreeEnablement(boolean enabled) {
    Object[] elements = provider.getElements(activitySupport);

    //reset grey state to null
    dualViewer.setGrayedElements(new Object[0]);

    //enable all categories
    for (int i = 0; i < elements.length; i++) {
        dualViewer.expandToLevel(elements[i], AbstractTreeViewer.ALL_LEVELS);
        dualViewer.setSubtreeChecked(elements[i], enabled);
    }
}