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

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

Introduction

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

Prototype

public TreeViewerFocusCellManager(TreeViewer viewer, FocusCellHighlighter focusDrawingDelegate) 

Source Link

Document

Create a new manager using a default navigation strategy:
  • SWT.ARROW_UP: navigate to cell above
  • SWT.ARROW_DOWN: navigate to cell below
  • SWT.ARROW_RIGHT: on first column (collapses if item is expanded) else navigate to next visible cell on the right
  • SWT.ARROW_LEFT: on first column (expands if item is collapsed) else navigate to next visible cell on the left

Usage

From source file:Snippet048TreeViewerTabWithCheckboxFor3_3.java

License:Open Source License

public Snippet048TreeViewerTabWithCheckboxFor3_3(final Shell shell) {
    final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION);
    v.getTree().setLinesVisible(true);//from   w  w w  . j  a v  a2  s . c  o m
    v.getTree().setHeaderVisible(true);

    final TreeViewerFocusCellManager mgr = new TreeViewerFocusCellManager(v,
            new FocusCellOwnerDrawHighlighter(v));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(v) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && (event.keyCode == SWT.CR || event.character == ' '))
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TreeViewerEditor.create(v, mgr, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    final TextCellEditor textCellEditor = new TextCellEditor(v.getTree());
    final CheckboxCellEditor checkboxCellEditor = new CheckboxCellEditor(v.getTree());

    TreeViewerColumn column = new TreeViewerColumn(v, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Column 1");
    column.setLabelProvider(new ColumnLabelProvider() {

        public String getText(Object element) {
            return "Column 1 => " + element.toString();
        }

    });
    column.setEditingSupport(new EditingSupport(v) {
        protected boolean canEdit(Object element) {
            return false;
        }

        protected CellEditor getCellEditor(Object element) {
            return textCellEditor;
        }

        protected Object getValue(Object element) {
            return ((MyModel) element).counter + "";
        }

        protected void setValue(Object element, Object value) {
            ((MyModel) element).counter = Integer.parseInt(value.toString());
            v.update(element, null);
        }
    });

    column = new TreeViewerColumn(v, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Column 2");
    column.setLabelProvider(new ColumnLabelProvider() {

        public String getText(Object element) {
            return "Column 2 => " + element.toString();
        }

    });
    column.setEditingSupport(new EditingSupport(v) {
        protected boolean canEdit(Object element) {
            return true;
        }

        protected CellEditor getCellEditor(Object element) {
            return textCellEditor;
        }

        protected Object getValue(Object element) {
            return ((MyModel) element).counter + "";
        }

        protected void setValue(Object element, Object value) {
            ((MyModel) element).counter = Integer.parseInt(value.toString());
            v.update(element, null);
        }
    });

    column = new TreeViewerColumn(v, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Column 3");
    column.setLabelProvider(new ColumnLabelProvider() {

        public String getText(Object element) {
            return ((MyModel) element).bool + "";
        }

    });
    column.setEditingSupport(new EditingSupport(v) {
        protected boolean canEdit(Object element) {
            return true;
        }

        protected CellEditor getCellEditor(Object element) {
            return checkboxCellEditor;
        }

        protected Object getValue(Object element) {
            return new Boolean(((MyModel) element).bool);
        }

        protected void setValue(Object element, Object value) {
            ((MyModel) element).bool = ((Boolean) value).booleanValue();
            v.update(element, null);
        }
    });

    v.setContentProvider(new MyContentProvider());
    v.setInput(createModel());
    v.getControl().addTraverseListener(new TraverseListener() {

        public void keyTraversed(TraverseEvent e) {
            if ((e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS)
                    && mgr.getFocusCell().getColumnIndex() == 2) {
                ColumnViewerEditor editor = v.getColumnViewerEditor();
                ViewerCell cell = mgr.getFocusCell();

                try {
                    Method m = ColumnViewerEditor.class.getDeclaredMethod("processTraverseEvent",
                            new Class[] { int.class, ViewerRow.class, TraverseEvent.class });
                    m.setAccessible(true);
                    m.invoke(editor,
                            new Object[] { new Integer(cell.getColumnIndex()), cell.getViewerRow(), e });
                } catch (SecurityException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (NoSuchMethodException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (IllegalArgumentException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (IllegalAccessException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (InvocationTargetException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }

    });
}

From source file:com.ibm.etools.mft.conversion.esb.editor.parameter.SourceProjectEditor.java

License:Open Source License

@Override
public void createControls(Composite parent) {
    updateProjectsInModel();//from  w  w  w .  j a  v  a  2s.  co m

    Composite container = new Composite(parent, SWT.None);
    container.setLayout(new GridLayout(2, false));
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    rootComposite = container;

    importLink = new Link(container, SWT.None);
    importLink.setText(WESBConversionMessages.SourceProjectEditor_importLink);
    GridData data = new GridData();
    data.verticalAlignment = SWT.BEGINNING;
    data.horizontalSpan = 2;
    importLink.setLayoutData(data);
    importLink.addSelectionListener(this);

    viewer = new CheckboxTreeViewer(container, SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
    viewer.getTree().setLinesVisible(true);
    viewer.getTree().setHeaderVisible(true);
    data = new GridData(GridData.FILL_BOTH);
    data.horizontalSpan = 2;
    // data.heightHint = 200;
    viewer.getTree().setLayoutData(data);
    for (int i = 0; i < COLUMN_HEADINGS.length; i++) {
        TreeColumn column = new TreeColumn(viewer.getTree(), SWT.None);
        column.setText(COLUMN_HEADINGS[i]);
        column.setResizable(true);
        column.setWidth(WIDTHES[i]);
    }
    viewer.addCheckStateListener(this);

    viewer.setContentProvider(new WESBProjectContentProvider());
    viewer.setLabelProvider(new ProjectLabelProvider());
    CustomTextCellEditor cellEditor = new CustomTextCellEditor(viewer.getTree()) {
        @Override
        public String isValid(Object value) {
            return getErrorMessage();
        }
    };
    viewer.setCellEditors(new CellEditor[] { null, cellEditor });
    cellEditor.setValidator(new ICellEditorValidator() {
        @Override
        public String isValid(Object value) {
            return isValidTargetName(value.toString());
        }
    });

    viewer.setCellModifier(new ICellModifier() {

        @Override
        public void modify(Object element, String property, Object value) {
            IProject p = (IProject) ((TreeItem) element).getData();
            WESBProject wesbp = projectsInModel.get(p.getName());
            if (wesbp == null) {
                wesbp = new WESBProject();
                wesbp.setName(p.getName());
                getModel().getSourceProjects().add(wesbp);
                updateProjectsInModel();
            }
            if (value != null) {
                wesbp.setTargetName(value.toString());
                viewer.refresh(p);
                changed();
            }
        }

        @Override
        public Object getValue(Object element, String property) {
            IProject p = (IProject) element;
            WESBProject wesbp = projectsInModel.get(p.getName());
            if (wesbp == null) {
                return ""; //$NON-NLS-1$
            }
            String targetName = wesbp.getTargetName();
            return targetName == null ? "" : targetName; //$NON-NLS-1$
        }

        @Override
        public boolean canModify(Object element, String property) {
            projectBeingEditted = (IProject) element;
            return true;
        }
    });
    viewer.setInput(ResourcesPlugin.getWorkspace());
    viewer.setColumnProperties(PROPERTIES);

    FocusCellOwnerDrawHighlighter projectHighlighter = new FocusCellOwnerDrawHighlighter(viewer);

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(viewer, projectHighlighter);

    ColumnViewerEditorActivationStrategy activationSupport = new ColumnViewerEditorActivationStrategy(viewer) {

        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {

            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    activationSupport.setEnableEditorActivationWithKeyboard(true);

    TreeViewerEditor.create(viewer, focusCellManager, activationSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    Composite container2 = new Composite(container, SWT.None);
    GridLayout layout = new GridLayout(2, false);
    layout.marginWidth = 0;
    container2.setLayout(layout);
    data = new GridData();
    data.horizontalSpan = 2;
    data.horizontalIndent = 0;
    container2.setLayoutData(data);

    selectAll = new Button(container2, SWT.NONE);
    selectAll.setText(WESBConversionMessages.projectSelectionPage_SelectAll);
    data = new GridData();
    data.horizontalAlignment = SWT.BEGINNING;
    selectAll.setLayoutData(data);
    selectAll.addSelectionListener(this);

    deselectAll = new Button(container2, SWT.NONE);
    deselectAll.setText(WESBConversionMessages.projectSelectionPage_DeselectAll);
    data = new GridData();
    data.horizontalAlignment = SWT.BEGINNING;
    deselectAll.setLayoutData(data);
    deselectAll.addSelectionListener(this);

    includeReferencedProjectOption = new Button(container, SWT.CHECK);
    includeReferencedProjectOption
            .setText(WESBConversionMessages.projectSelectionPage_IncludeReferencedProject);
    includeReferencedProjectOption
            .setSelection(getModel().getGlobalConfiguration().isIncludeReferencedProject());

    updateViewer();

    if (includeReferencedProjectOption.getSelection()) {
        ensureAllReferencedProjectsAreChecked();
        updateModel();
    }

    includeReferencedProjectOption.addSelectionListener(this);
    ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);

}

From source file:de.byteholder.geoclipse.mapprovider.DialogMPProfile.java

License:Open Source License

private Control createUI114Viewer(final Composite parent, final PixelConverter pixelConverter) {

    final TreeColumnLayout treeLayout = new TreeColumnLayout();

    final Composite layoutContainer = new Composite(parent, SWT.NONE);
    layoutContainer.setLayout(treeLayout);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(layoutContainer);
    {/*from  w  w w. ja v  a 2  s. com*/

        final Tree tree = new Tree(layoutContainer,
                SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);

        tree.setHeaderVisible(true);
        tree.setLinesVisible(true);

        /*
         * tree viewer
         */
        _treeViewer = new ContainerCheckedTreeViewer(tree);

        _treeViewer.setContentProvider(new MapContentProvider());
        _treeViewer.setUseHashlookup(true);

        _treeViewer.addDoubleClickListener(new IDoubleClickListener() {
            public void doubleClick(final DoubleClickEvent event) {

                final Object selectedItem = ((IStructuredSelection) _treeViewer.getSelection())
                        .getFirstElement();
                if (selectedItem != null) {

                    if (selectedItem instanceof TVIMapProvider) {

                        // expand/collapse current item

                        final MP mapProvider = ((TVIMapProvider) selectedItem).getMapProviderWrapper().getMP();

                        if ((mapProvider instanceof MPWms) == false) {

                            // all none wms map provider can be toggled

                            toggleMapVisibility(tree);

                        } else {

                            // expand/collapse item

                            if (_treeViewer.getExpandedState(selectedItem)) {
                                _treeViewer.collapseToLevel(selectedItem, 1);
                            } else {
                                _treeViewer.expandToLevel(selectedItem, 1);
                            }
                        }

                    } else if (selectedItem instanceof TVIWmsLayer) {
                        toggleMapVisibility(tree);
                    }
                }
            }
        });

        _treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(final SelectionChangedEvent event) {
                onSelectMP(event.getSelection());
            }
        });

        _treeViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
                new DragSourceListener() {

                    public void dragFinished(final DragSourceEvent event) {

                        final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();

                        if (event.doit == false) {
                            return;
                        }

                        transfer.setSelection(null);
                        transfer.setSelectionSetTime(0);
                    }

                    public void dragSetData(final DragSourceEvent event) {
                        // data are set in LocalSelectionTransfer
                    }

                    public void dragStart(final DragSourceEvent event) {

                        final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
                        final ITreeSelection selection = (ITreeSelection) _treeViewer.getSelection();

                        transfer.setSelection(selection);
                        transfer.setSelectionSetTime(_dragStartTime = event.time & 0xFFFFFFFFL);

                        // only ONE map provider/layer is allowed to be dragged
                        final Object firstElement = selection.getFirstElement();
                        event.doit = (selection.size() == 1) && ((firstElement instanceof TVIMapProvider)
                                || (firstElement instanceof TVIWmsLayer));
                    }
                });

        _treeViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
                new ProfileDropAdapter(this, _treeViewer));

        tree.addKeyListener(new KeyListener() {

            public void keyPressed(final KeyEvent e) {

                /*
                 * toggle the visibility with the space key
                 */
                if (e.keyCode == ' ') {
                    toggleMapVisibility(tree);
                }
            }

            public void keyReleased(final KeyEvent e) {
            }
        });

        /*
         * add editing support for the tree
         */
        final TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(_treeViewer,
                new FocusCellOwnerDrawHighlighter(_treeViewer));

        final ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(
                _treeViewer) {

            @Override
            protected boolean isEditorActivationEvent(final ColumnViewerEditorActivationEvent event) {
                return (event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL)
                        || (event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION)
                        || ((event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED)
                                && (event.keyCode == SWT.F2))
                        || (event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC);
            }
        };

        TreeViewerEditor.create(_treeViewer, //
                focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL //
                        | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR //
                        | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    }

    createUI116ViewerColumns(treeLayout, pixelConverter);

    return layoutContainer;
}

From source file:dslComponent.Snippet056BooleanCellEditor.java

License:Open Source License

public Snippet056BooleanCellEditor(final Shell shell) {

    final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION);
    v.getTree().setLinesVisible(true);//from   w  ww  . jav  a  2 s.  c  om
    v.getTree().setHeaderVisible(true);

    FocusCellOwnerDrawHighlighter h = new FocusCellOwnerDrawHighlighter(v) {

        @Override
        protected Color getSelectedCellBackgroundColorNoFocus(ViewerCell cell) {
            return shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
        }

        @Override
        protected Color getSelectedCellForegroundColorNoFocus(ViewerCell cell) {
            return shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_FOREGROUND);
        }
    };

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(v, h);
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(v);

    int feature = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
            | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION;

    TreeViewerEditor.create(v, focusCellManager, actSupport, feature);

    final TextCellEditor textCellEditor = new TextCellEditor(v.getTree());
    final CheckboxCellEditor booleanCellEditor = new CheckboxCellEditor(v.getTree());

    TreeViewerColumn column = createColumnFor(v, "Column 1");
    column.setLabelProvider(new MyColumnLabelProvider("Column 1"));
    column.setEditingSupport(new MyEditingSupport(v, v, textCellEditor));

    column = createColumnFor(v, "Column 2");
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return ((MyModel) element).flag + "";
        }

    });
    column.setEditingSupport(new EditingSupport(v) {
        @Override
        protected boolean canEdit(Object element) {
            return true;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return booleanCellEditor;
        }

        @Override
        protected Object getValue(Object element) {
            return new Boolean(((MyModel) element).flag);
        }

        @Override
        protected void setValue(Object element, Object value) {
            ((MyModel) element).flag = ((Boolean) value).booleanValue();
            v.update(element, null);
        }
    });
    column = createColumnFor(v, "Column 3");
    column.setLabelProvider(new MyColumnLabelProvider("Column 3"));
    column.setEditingSupport(new MyEditingSupport(v, v, textCellEditor));

    v.setContentProvider(new MyContentProvider());
    v.setInput(createModel());
}

From source file:fr.inria.atlanmod.emftocsp.ui.wizards.impl.ModelElementDomainPage.java

License:Open Source License

public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    container.setLayout(new FormLayout());
    setControl(container);//from   w  w w .java 2s.  c om

    FormData formData = new FormData();
    formData.left = new FormAttachment(0, 0);
    formData.top = new FormAttachment(0, 0);
    formData.right = new FormAttachment(100, -5);
    formData.bottom = new FormAttachment(100, 0);

    treeViewer = new TreeViewer(container, SWT.BORDER | SWT.FULL_SELECTION);
    treeViewer.getControl().setLayoutData(formData);
    treeViewer.getTree().setLinesVisible(true);
    treeViewer.getTree().setHeaderVisible(true);
    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(treeViewer,
            new FocusCellOwnerDrawHighlighter(treeViewer));

    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(treeViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TreeViewerEditor.create(treeViewer, focusCellManager, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    final TextCellEditor textCellEditor = new TextCellEditor(treeViewer.getTree());
    TreeViewerColumn column = new TreeViewerColumn(treeViewer, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Model Elements"); //$NON-NLS-1$

    column.setLabelProvider(new ColumnLabelProvider() {
        @Override
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public String getText(Object element) {
            if (element instanceof StructuralNode)
                return ((StructuralNode) element).getNodeType() == CLASS ? "Classes" : "Associations"; //$NON-NLS-1$ //$NON-NLS-2$
            if (element instanceof EClass)
                return ((EClass) element).getName();
            if (element instanceof Class)
                return ((Class) element).getName();
            if (element instanceof Association) {
                IModelReader modelReader = modelSolver.getModelReader();
                return modelReader.getAssociationName(((Association) element));
            }
            if (element instanceof EAssociation) {
                IModelReader modelReader = modelSolver.getModelReader();
                return modelReader.getAssociationName(((EAssociation) element));
            }
            if (element instanceof EAttribute) {
                EAttribute a = (EAttribute) element;
                return ((EAttribute) element).getName() + ": " //$NON-NLS-1$
                        + ((EAttribute) element).getEAttributeType().getName();
            }
            if (element instanceof StringAttributeContainer) {
                StringAttributeContainer c = (StringAttributeContainer) element;
                String base = c.attribute.getName() + ": " + c.attribute.getEAttributeType().getName(); //$NON-NLS-1$
                if (c.kind == StringAttributeContainer.Kind.LENGTH) {
                    return base + " (length)";
                }
                if (c.kind == StringAttributeContainer.Kind.DOMAIN) {
                    return base + " (domain)";
                }
            }
            if (element instanceof Property)
                return ((Property) element).getName() + ": " + ((Property) element).getType().getName(); //$NON-NLS-1$
            return ""; //$NON-NLS-1$
        }

        public Image getImage(Object element) {
            return null;
        }
    });
    column = new TreeViewerColumn(treeViewer, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Value"); //$NON-NLS-1$
    column.setLabelProvider(new ColumnLabelProvider() {
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public String getText(Object element) {
            String result = ""; //$NON-NLS-1$
            if (element instanceof StringAttributeContainer)
                result = modelElementsDomain.get(((StringAttributeContainer) element).getKey());
            if (element instanceof EAttribute)
                result = modelElementsDomain.get(((EAttribute) element).getEContainingClass().getName() + "." //$NON-NLS-1$
                        + ((EAttribute) element).getName());
            if (element instanceof EClass)
                result = modelElementsDomain
                        .get(((EClass) element).getEPackage().getName() + "." + ((EClass) element).getName()); //$NON-NLS-1$
            if (element instanceof Class)
                result = modelElementsDomain
                        .get(((Class) element).getPackage().getName() + "." + ((Class) element).getName()); //$NON-NLS-1$
            if (element instanceof Property)
                result = modelElementsDomain
                        .get(((Property) element).getClass_().getName() + "." + ((Property) element).getName()); //$NON-NLS-1$
            if (element instanceof Association) {
                IModelReader modelReader = modelSolver.getModelReader();
                return modelElementsDomain.get(modelReader.getAssociationName(((Association) element)));
            }
            if (element instanceof EAssociation) {
                IModelReader modelReader = modelSolver.getModelReader();
                return modelElementsDomain.get(modelReader.getAssociationName(((EAssociation) element)));
            }
            return result != null ? result : ""; //$NON-NLS-1$
        }
    });
    column.setEditingSupport(new EditingSupport(treeViewer) {

        protected boolean canEdit(Object element) {
            return !(element instanceof StructuralNode);
        }

        protected CellEditor getCellEditor(Object element) {
            return textCellEditor;
        }

        @SuppressWarnings({ "rawtypes", "unchecked" })
        protected Object getValue(Object element) {
            String result = ""; //$NON-NLS-1$
            if (element instanceof EAttribute)
                result = modelElementsDomain.get(((EAttribute) element).getEContainingClass().getName() + "." //$NON-NLS-1$
                        + ((EAttribute) element).getName());
            if (element instanceof StringAttributeContainer)
                result = modelElementsDomain.get(((StringAttributeContainer) element).getKey());
            if (element instanceof EClass)
                result = modelElementsDomain
                        .get(((EClass) element).getEPackage().getName() + "." + ((EClass) element).getName()); //$NON-NLS-1$
            if (element instanceof Class)
                result = modelElementsDomain
                        .get(((Class) element).getPackage().getName() + "." + ((Class) element).getName()); //$NON-NLS-1$
            if (element instanceof Property)
                result = modelElementsDomain
                        .get(((Property) element).getClass_().getName() + "." + ((Property) element).getName()); //$NON-NLS-1$
            if (element instanceof Association) {
                IModelReader modelReader = modelSolver.getModelReader();
                return modelElementsDomain.get(modelReader.getAssociationName(((Association) element)));
            }
            if (element instanceof EAssociation) {
                IModelReader modelReader = modelSolver.getModelReader();
                return modelElementsDomain.get(modelReader.getAssociationName(((EAssociation) element)));
            }
            return result != null ? result : ""; //$NON-NLS-1$
        }

        @SuppressWarnings({ "rawtypes", "unchecked" })
        protected void setValue(Object element, Object value) {
            String key = ""; //$NON-NLS-1$
            if (element instanceof EAttribute)
                key = ((EAttribute) element).getEContainingClass().getName() + "." //$NON-NLS-1$
                        + ((EAttribute) element).getName();
            if (element instanceof StringAttributeContainer)
                key = ((StringAttributeContainer) element).getKey();
            if (element instanceof EClass)
                key = ((EClass) element).getEPackage().getName() + "." + ((EClass) element).getName(); //$NON-NLS-1$
            if (element instanceof Class)
                key = ((Class) element).getPackage().getName() + "." + ((Class) element).getName(); //$NON-NLS-1$
            if (element instanceof Property)
                key = ((Property) element).getClass_().getName() + "." + ((Property) element).getName(); //$NON-NLS-1$
            if (element instanceof Association) {
                IModelReader modelReader = modelSolver.getModelReader();
                key = modelReader.getAssociationName(((Association) element));
            }
            if (element instanceof EAssociation) {
                IModelReader modelReader = modelSolver.getModelReader();
                key = modelReader.getAssociationName(((EAssociation) element));
            }
            modelElementsDomain.remove(key);
            modelElementsDomain.put(key, (String) value);
            treeViewer.update(element, null);
            modelSolver.setModelElementsDomain(modelElementsDomain);
        }
    });
}

From source file:fr.inria.linuxtools.internal.tmf.ui.project.wizards.importtrace.ImportTraceWizardScanPage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    super.createControl(parent);
    final Composite control = (Composite) this.getControl();
    setTitle(Messages.ImportTraceWizardScanPageTitle);
    traceTypeViewer = new CheckboxTreeViewer(control, SWT.CHECK);
    traceTypeViewer.setContentProvider(getBatchWizard().getScannedTraces());
    traceTypeViewer.getTree().setHeaderVisible(true);
    traceTypeViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    traceTypeViewer.setInput(getBatchWizard().getScannedTraces());
    traceTypeViewer.addCheckStateListener(new ImportTraceCheckStateListener());

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(traceTypeViewer,
            new FocusCellOwnerDrawHighlighter(traceTypeViewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(
            traceTypeViewer) {//from   w  w  w  .  j a v a2s  .  com
    };
    TreeViewerEditor.create(traceTypeViewer, focusCellManager, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    final TextCellEditor textCellEditor = new TextCellEditor(traceTypeViewer.getTree());
    // --------------------
    // Column 1
    // --------------------
    TreeViewerColumn column = new TreeViewerColumn(traceTypeViewer, SWT.NONE);
    column.getColumn().setWidth(COL_WIDTH);
    column.getColumn().setText(Messages.ImportTraceWizardTraceDisplayName);
    column.setLabelProvider(new FirstColumnLabelProvider());
    column.setEditingSupport(new ColumnEditorSupport(traceTypeViewer, textCellEditor));

    // --------------------
    // Column 2
    // --------------------

    column = new TreeViewerColumn(traceTypeViewer, SWT.NONE);
    column.getColumn().setWidth(500);
    column.getColumn().setText(Messages.ImportTraceWizardImportCaption);
    column.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof FileAndName) {
                FileAndName elem = (FileAndName) element;
                return elem.getFile().getPath();
            }
            return null;
        }
    });
    // --------------------
    // Column 3
    // --------------------

    column = new TreeViewerColumn(traceTypeViewer, SWT.NONE);

    column.getColumn().setWidth(80);
    column.getColumn().setText(Messages.ImportTraceWizardScanPageSize);
    column.getColumn().setAlignment(SWT.RIGHT);
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof FileAndName) {

                FileAndName elem = (FileAndName) element;
                long len = recurseSize(elem.getFile());
                if (len > 0) {
                    double sizeb10 = Math.log10(len);
                    DecimalFormat df = new DecimalFormat();
                    df.setMaximumFractionDigits(2);
                    df.setMinimumFractionDigits(0);
                    if (sizeb10 > 12) {
                        final double tbSize = len / 1024.0 / 1024 / 1024 / 1024;
                        return df.format(tbSize) + Messages.ImportTraceWizardScanPageTerabyte;
                    }
                    if (sizeb10 > 9) {
                        final double gbSize = len / 1024.0 / 1024 / 1024;
                        return df.format(gbSize) + Messages.ImportTraceWizardScanPageGigabyte;
                    }
                    if (sizeb10 > 6) {
                        final double mbSize = len / 1024.0 / 1024;
                        return df.format(mbSize) + Messages.ImportTraceWizardScanPageMegabyte;
                    }
                    if (sizeb10 > 3) {
                        final double kbSize = len / 1024.0;
                        return df.format(kbSize) + Messages.ImportTraceWizardScanPageKilobyte;
                    }
                }
                return Long.toString(len) + Messages.ImportTraceWizardScanPagebyte;

            }
            return null;
        }

        private long recurseSize(File file) {
            if (file.isFile() && file.canRead()) {
                return file.length();
            }
            long size = 0;
            if (file.exists() && file.isDirectory() && file.canRead()) {
                final File[] listFiles = file.listFiles();
                if (listFiles != null) {
                    for (File child : listFiles) {
                        if (child.isFile() && child.canRead()) {
                            size += child.length();
                        } else if (child.isDirectory()) {
                            size += recurseSize(child);
                        } else {
                            Activator.getDefault()
                                    .logError("Unknown \"file\" type for " + child + ' ' + child.toString()); //$NON-NLS-1$
                        }
                    }
                }
            }
            return size;
        }
    });

    init();
    getBatchWizard().setTracesToScan(fTracesToScan);
    getBatchWizard().setTraceFolder(fTargetFolder);

    fRunnable.schedule();
    setErrorMessage(Messages.ImportTraceWizardScanPageSelectAtleastOne);
}

From source file:net.sf.smbt.ui.ableton.views.AbletonLiveView.java

License:LGPL

private void createDetailsPanel(Composite container) {
    container.setLayout(GridLayoutFactory.fillDefaults().create());
    container.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    detailsPanel = GUIToolkit.INSTANCE.createComposite(container, SWT.DOUBLE_BUFFERED);
    detailsPanel.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());
    detailsPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    sash = new SashForm(detailsPanel, SWT.BORDER | SWT.VERTICAL);
    sash.setLayout(GridLayoutFactory.fillDefaults().create());
    sash.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    sash.setBackground(GUIToolkit.FG);/*from   w w w.ja v a2  s  .c o  m*/

    Composite topPanel = GUIToolkit.INSTANCE.createComposite(detailsPanel, SWT.DOUBLE_BUFFERED);
    topPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    topPanel.setLayoutData(GridDataFactory.fillDefaults().grab(false, false).create());

    Composite timeDetails = GUIToolkit.INSTANCE.createComposite(topPanel, SWT.DOUBLE_BUFFERED);
    timeDetails.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());
    timeDetails.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).grab(true, false).create());

    // Tempo (BPM) 
    /*
    Label tempoLabel = GUIToolkit.INSTANCE.createLabel(timeDetails, "Tempo: ");
    tempoLabel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).grab(true, false).create());
            
    tempoValLabel = GUIToolkit.INSTANCE.createLabel(timeDetails, "-- Bpm");
    tempoValLabel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).grab(true, false).create());
            
    timeSongLCD = new SevenSegmentsDisplay(timeDetails, 5, SWT.NONE);
    timeSongLCD.setLayout(GridLayoutFactory.fillDefaults().create());
    timeSongLCD.setLayoutData(GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).span(2, 1).hint(300, 75).grab(false, false).create());
    timeSongLCD.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_GRAY));
     */

    Composite masterButtons = GUIToolkit.INSTANCE.createComposite(topPanel, SWT.DOUBLE_BUFFERED);
    masterButtons.setLayout(GridLayoutFactory.fillDefaults().create());
    masterButtons.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(true, false).create());

    final Button playStopButton = new Button(masterButtons, SWT.TOGGLE);
    playStopButton.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(64, 64).minSize(64, 64).create());
    playStopButton.setForeground(ColorsUtil.BG);
    playStopButton.setImage(playImageBig);
    playStopButton.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (playStopButton.getSelection()) {
                playStopButton.setImage(stopImageBig);
                liveController.handleMasterTrackState(MASTER_CTRL.PLAY);
            } else {
                playStopButton.setImage(playImageBig);
                liveController.handleMasterTrackState(MASTER_CTRL.STOP);
            }
        }

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

    /*
    Composite dbMeterPanel = GUIToolkit.INSTANCE.createComposite(topPanel, SWT.DOUBLE_BUFFERED);
    dbMeterPanel.setLayout(GridLayoutFactory.fillDefaults().create());
    dbMeterPanel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).grab(true, true).create());
            
            
    dbMeter = new UbiDbMeter(dbMeterPanel, SWT.HORIZONTAL);
    dbMeter.setMax(100f);
    dbMeter.setLayoutData(GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).hint(145, 145).grab(false, false).create());
    */

    //
    // Volume, Pan, Meter (R + L)
    //

    Composite upPanel = GUIToolkit.INSTANCE.createComposite(topPanel, SWT.SHADOW_ETCHED_IN);
    upPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    upPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());

    Composite vPanel = GUIToolkit.INSTANCE.createComposite(upPanel, SWT.SHADOW_ETCHED_IN);
    vPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    vPanel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(true, false).create());

    masterVolume = new UbiKnob(vPanel, SWT.HORIZONTAL);
    masterVolume.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(48, 48).grab(false, false).create());
    masterVolume.setMax(100f);
    masterVolume.setSelection(50);
    masterVolume.addSelectionListener(new UbiSelectionListener() {
        @Override
        public void handle() {
            float value = new Float(masterVolume.getSelection()) / 100f;
            if (value != liveController.getLiveApp().getMasterTrack().getVolume()) {
                liveController.getLiveApp().getMasterTrack().setVolume(value);
            }
        }
    });
    masterVolume.addMenuAction(new LinkOscAbletonCommandAction(masterVolume,
            ABLETON_OSC_MAPPING.MASTER_VOLUME.getLiteral(), 100f));

    Label masterVolumeLabel = GUIToolkit.INSTANCE.createLabel(vPanel, "Vol");
    masterVolumeLabel.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(false, false).create());

    Composite pPanel = GUIToolkit.INSTANCE.createComposite(upPanel, SWT.DOUBLE_BUFFERED);
    pPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    pPanel.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).grab(true, false).create());

    masterPan = new UbiKnob(pPanel, SWT.HORIZONTAL);
    masterPan.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(48, 48).grab(false, false).create());
    masterPan.setMax(100f);
    masterPan.setSelection(50);
    masterPan.addSelectionListener(new UbiSelectionListener() {
        @Override
        public void handle() {
            float value = new Float(masterPan.getSelection() - 50) / 50f;
            if (value != liveController.getLiveApp().getMasterTrack().getPan()) {
                liveController.getLiveApp().getMasterTrack().setPan(value);
            }
        }
    });
    masterPan.addMenuAction(
            new LinkOscAbletonCommandAction(masterPan, ABLETON_OSC_MAPPING.MASTER_VOLUME.getLiteral(), 100f));

    Label masterPanLabel = GUIToolkit.INSTANCE.createLabel(pPanel, "Pan");
    masterPanLabel.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(false, false).create());

    //
    // Vu Meters
    //

    Composite vuMetersPanel = GUIToolkit.INSTANCE.createComposite(upPanel, SWT.DOUBLE_BUFFERED);
    vuMetersPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(2).create());
    vuMetersPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());

    //leftMasterVu.setLayoutData(GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER).hint(250, SWT.DEFAULT).grab(true, false).create());
    /*
          Label rightMasterVuLabel = GUIToolkit.INSTANCE.createLabel(vuMetersPanel, "L/R ");
          rightMasterVuLabel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).grab(false, false).create());
       */
    masterVu = new UbiVuMeter(vuMetersPanel, SWT.VERTICAL);
    masterVu.setLevel(0);
    masterVu.setMax(100);
    masterVu.setLayout(GridLayoutFactory.fillDefaults().create());
    masterVu.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(20, 250).grab(true, false).create());

    Composite tracksPanel = GUIToolkit.INSTANCE.createComposite(sash, SWT.DOUBLE_BUFFERED);
    tracksPanel.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).create());
    tracksPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    subDetailsViewer = GUIToolkit.INSTANCE.createTreeViewer(tracksPanel, SWT.FULL_SELECTION);
    subDetailsViewer.getTree().setLinesVisible(true);
    subDetailsViewer.setLabelProvider(new AbletonLiveLabelProvider());

    AbletonLiveDetailsContentProvider abletonLiveDetailsContentProvider = new AbletonLiveDetailsContentProvider();

    subDetailsViewer.setContentProvider(abletonLiveDetailsContentProvider);
    subDetailsViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    subDetailsViewer.getTree().setHeaderVisible(true);
    subDetailsViewer.getTree().setLinesVisible(true);
    subDetailsViewer.setInput(liveController.getLiveApp());

    subDetailsViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            doubleClickAction2.run();
        }
    });

    /*
    subDetailsViewer.getControl().addListener (SWT.MouseDown, new Listener() {
       public void handleEvent (Event event) {
    Tree tree = (Tree) subDetailsViewer.getControl();
    Rectangle clientArea = tree.getClientArea ();
    Point pt = new Point(event.x, event.y);
    int index = 0;
    while (index < tree.getItemCount ()) {
       boolean visible = false;
       TreeItem item = ((Tree)subDetailsViewer.getControl()).getItem (index);
       for (int i=0; i < tree.getColumnCount(); i++) {
          Rectangle rect = item.getBounds (i);
          rect.width = 16;
          if (rect.contains (pt)) {
             handleToggleClip(index, i, item.getData());
          }
          if (!visible && rect.intersects (clientArea)) {
             visible = true;
          }
       }
       if (!visible) return;
       index++;
    }
       }
    });
    */

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(subDetailsViewer,
            new FocusCellOwnerDrawHighlighter(subDetailsViewer) {
                @Override
                public ViewerCell getFocusCell() {
                    ViewerCell cell = super.getFocusCell();
                    handleClipDetails(cell.getElement(), cell.getColumnIndex());
                    return cell;
                }
            });

    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(
            subDetailsViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return false;
        }
    };

    TreeViewerEditor.create(subDetailsViewer, focusCellManager, actSupport,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    scXui = GUIToolkit.INSTANCE.createScrolledComposite(sash);
    scXui.setLayout(GridLayoutFactory.fillDefaults().create());
    scXui.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    scXui.getParent().setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));

    xuiPanel = GUIToolkit.INSTANCE.createComposite(scXui, SWT.DOUBLE_BUFFERED);
    xuiPanelLayout = GridLayoutFactory.fillDefaults().numColumns(16).equalWidth(false).margins(0, 0)
            .extendedMargins(0, 0, 0, 0).spacing(0, 0).create();
    xuiPanel.setLayout(xuiPanelLayout);
    xuiPanel.setLayoutData(GridDataFactory.fillDefaults().grab(false, true).create());

    scXui.setExpandVertical(true);
    scXui.setExpandHorizontal(true);
    scXui.setAlwaysShowScrollBars(true);
    scXui.setOrientation(SWT.VERTICAL);

    scXui.setContent(xuiPanel);
    scXui.addControlListener(new ControlAdapter() {
        public void controlResized(ControlEvent e) {
            Rectangle r = sash.getClientArea();
            scXui.setMinSize(xuiPanel.computeSize(r.width, SWT.DEFAULT));
        }
    });
    /*
    int realWidth = 0;
    for (TreeViewerColumn c : treeColumnsMap.values()) {
       realWidth += c.getColumn().getWidth();
    }
            
    ((GridData)xuiPanel.getLayoutData()).minimumWidth = realWidth;
            
    hbarScXui = new SelectionListener() {
       @Override
       public void widgetSelected(SelectionEvent e) {
    sc.getHorizontalBar().removeSelectionListener(hbarSc);
    sc.getHorizontalBar().setSelection(e.x);
    sc.getHorizontalBar().addSelectionListener(hbarSc);
       }
       @Override
       public void widgetDefaultSelected(SelectionEvent e) {
            
       }
    };
    if (scXui.getHorizontalBar() != null) {
       scXui.getHorizontalBar().addSelectionListener(
    hbarScXui
       );
    }
    */

    devicesPanel = GUIToolkit.INSTANCE.createComposite(sash, SWT.DOUBLE_BUFFERED);
    devicesPanel.setLayout(GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(false).create());
    devicesPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    bottomSash = new SashForm(devicesPanel, SWT.HORIZONTAL);
    bottomSash.setLayout(GridLayoutFactory.fillDefaults().create());
    bottomSash.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    bottomSash.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));

    devicesViewer = GUIToolkit.INSTANCE.createTreeViewer(bottomSash, SWT.FULL_SELECTION);
    devicesViewer.setLabelProvider(new LabelProvider() {
        @Override
        public Image getImage(Object element) {
            if (element instanceof AbstractLiveDevice) {
                return deviceImage;
            } else if (element instanceof LiveParam) {
                return paramImage;
            }
            return deviceImage;
        }

        @Override
        public String getText(Object element) {
            if (element instanceof AbstractLiveDevice) {
                return ((AbstractLiveDevice) element).getDeviceName();
            } else if (element instanceof LiveParam) {
                LiveParam param = (LiveParam) element;
                return param.getName() + " : " + param.getValue() + " [" + param.getMin() + " .. "
                        + param.getMax() + "]";
            }
            return "???";
        }
    });

    devicesViewer.setContentProvider(new DevicesContentProvider());
    devicesViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    sc = GUIToolkit.INSTANCE.createScrolledComposite(bottomSash);
    sc.setLayout(GridLayoutFactory.fillDefaults().create());
    sc.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    sc.getParent().setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));

    deviceWidgetContainer = GUIToolkit.INSTANCE.createComposite(sc, SWT.DOUBLE_BUFFERED);
    deviceWidgetContainer.setLayout(GridLayoutFactory.fillDefaults().create());
    deviceWidgetContainer.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    deviceWidgetContainer.getParent().setBackground(GUIToolkit.BG);
    deviceWidgetContainer.addControlListener(new ControlListener() {
        @Override
        public void controlResized(ControlEvent e) {
        }

        @Override
        public void controlMoved(ControlEvent e) {
            System.out.println("moved");
        }
    });

    sc.setExpandVertical(true);
    sc.setAlwaysShowScrollBars(true);
    sc.setOrientation(SWT.VERTICAL);

    sc.setContent(deviceWidgetContainer);
    sc.addControlListener(new ControlAdapter() {
        public void controlResized(ControlEvent e) {
            Rectangle r = sc.getClientArea();
            sc.setMinSize(devicesPanel.computeSize(r.width, SWT.DEFAULT));
        }
    });

    hbarSc = new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            scXui.getHorizontalBar().removeSelectionListener(hbarScXui);
            scXui.getHorizontalBar().setSelection(e.x);
            scXui.getHorizontalBar().addSelectionListener(hbarScXui);
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {

        }
    };
    if (scXui.getHorizontalBar() != null) {
        sc.getHorizontalBar().addSelectionListener(hbarSc);
    }
    Rectangle r = sc.getClientArea();
    sc.setMinSize(devicesPanel.computeSize(r.width, SWT.DEFAULT));

    devicesViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection selection = devicesViewer.getSelection();
            if (selection instanceof IStructuredSelection) {
                Object obj = null;
                StructuredSelection ssel = (StructuredSelection) selection;
                if (!ssel.isEmpty()) {
                    obj = ssel.getFirstElement();
                }
                AbstractDeviceWidget w = AbletonWidgetManager.INSTANCE.getNullWidget();
                AbstractLiveDevice device = null;
                if (obj instanceof AbstractLiveDevice) {
                    device = (AbstractLiveDevice) obj;
                    w = AbletonWidgetManager.INSTANCE.getWidget(device.getDeviceName());
                }

                if (w instanceof AbstractDeviceWidget) {
                    deviceWidgetContainer.setVisible(true);
                    AbstractDeviceWidget widget = (AbstractDeviceWidget) w;
                    for (Control c : deviceWidgetContainer.getChildren()) {
                        c.setVisible(false);
                        if (!c.isDisposed()) {
                            c.dispose();
                        }
                    }
                    Control control = widget.createControl(deviceWidgetContainer, SWT.NONE);
                    if (!control.isDisposed() && control != null) {
                        control.setVisible(true);
                    }
                    if (device != null) {
                        widget.init(((LiveTrack) device.eContainer()), device);
                    }
                    deviceWidgetContainer.layout(true);
                    widget.redraw();
                } else {
                    sc.setVisible(false);
                    for (Control c : sc.getChildren()) {
                        c.setVisible(false);
                        if (!c.isDisposed()) {
                            c.dispose();
                        }
                    }
                }
                sc.redraw();
            } else {
                deviceWidgetContainer.setVisible(false);
                for (Control c : deviceWidgetContainer.getChildren()) {
                    c.setVisible(false);
                    if (!c.isDisposed()) {
                        c.dispose();
                    }
                }
            }
        }
    });

    bottomSash.setWeights(new int[] { 1, 5 });

    UIJob refreshDetailsJob = new UbiJob("Refresh Details") {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            synchronized (liveController.getLiveApp()) {
                synchronized (liveController.getLiveApp().getTracks()) {
                    for (LiveTrack t : treeColumnsMap.keySet()) {
                        if (!liveController.getLiveApp().getTracks().contains(t)) {
                            TreeViewerColumn col = treeColumnsMap.get(t);
                            treeColumnsMap.remove(t);
                            col.getColumn().dispose();

                            XUITrack xui = xuiTrackMap.get(t);
                            xuiTrackMap.remove(t);
                            xui.dispose();
                        }
                    }
                    for (LiveTrack track : liveController.getLiveApp().getTracks()) {
                        if (!treeColumnsMap.containsKey(track)) {
                            TreeViewerColumn tc = createTableViewerColumn(track.getTrackName(), 110);
                            treeColumnsMap.put(track, tc);
                            xuiTrackMap.put(track, new XUITrack(xuiPanel, track, tc, liveController));
                        } else {
                            treeColumnsMap.get(track).getColumn().setText(track.getTrackName());
                            int w = treeColumnsMap.get(track).getColumn().getWidth();
                            Rectangle rect = xuiTrackMap.get(track).getBounds();
                            xuiTrackMap.get(track).setBounds(rect.x, rect.y, w, rect.height);
                            GridData gd = (GridData) xuiTrackMap.get(track).getLayoutData();
                            gd.horizontalIndent = 0;
                            gd.widthHint = w;
                            gd.minimumWidth = SWT.DEFAULT;
                        }
                    }
                    xuiPanelLayout.numColumns = liveController.getLiveApp().getTracks().size();
                    if (xuiPanel != null && !xuiPanel.isDisposed()) {
                        xuiPanel.layout(true);
                        if (subDetailsViewer != null && subDetailsViewer.getControl() != null
                                && !subDetailsViewer.getControl().isDisposed()) {
                            if (subDetailsViewer != null && subDetailsViewer.getContentProvider() != null) {
                                if (subDetailsViewer.getInput() != liveController.getLiveApp()) {
                                    subDetailsViewer.setInput(liveController.getLiveApp());
                                    if (deviceWidgetContainer != null && !deviceWidgetContainer.isDisposed()) {
                                        deviceWidgetContainer.layout(true);
                                    }
                                }
                                subDetailsViewer.refresh(true);
                            }
                            devicesPanel.setVisible(liveController.isMonitorDevices());
                        }
                    }
                }
            }
            schedule(1000);
            return Status.OK_STATUS;
        }
    };
    refreshDetailsJob.setSystem(true);
    refreshDetailsJob.setPriority(Job.INTERACTIVE);
    refreshDetailsJob.schedule(1000);

    if (liveController != null && liveController.getAbletonOscEngine() != null) {
        liveController.monitorDevices(true);
    }
    if (devicesPanel != null) {
        deviceWidgetContainer.setVisible(true);
        devicesPanel.setVisible(liveController.isMonitorDevices());
        devicesPanel.setSize(sash.getSize().x, 250);
        devicesPanel.layout(true);
        deviceWidgetContainer.setSize(sash.getSize().x, 250);
        deviceWidgetContainer.redraw();
        deviceWidgetContainer.layout(true);
        deviceWidgetContainer.redraw();
        devicesPanel.layout(true);
        devicesPanel.redraw();

        if (devicesViewer.getTree() != null && devicesViewer.getTree().getItemCount() > 0) {
            @SuppressWarnings({ "rawtypes", "unused" })
            List lst = (List) devicesViewer.getInput();
            devicesViewer.getTree().select(devicesViewer.getTree().getItem(0));
            subDetailsViewer.refresh(true);
        }
        devicesPanel.layout(true);
        devicesPanel.redraw();
        for (Control c : devicesPanel.getChildren()) {
            if (c instanceof Control) {
                c.redraw();
            }
        }
    }

    sash.setWeights(new int[] { 2, 2, 2 });
}

From source file:net.sf.smbt.ui.audio.view.FmodexLiveView.java

License:LGPL

private void createDetailsPanel(Composite container) {
    container.setLayout(GridLayoutFactory.fillDefaults().create());
    container.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    detailsPanel = GUIToolkit.INSTANCE.createComposite(container, SWT.DOUBLE_BUFFERED);
    detailsPanel.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());
    detailsPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    sash = new SashForm(detailsPanel, SWT.BORDER | SWT.VERTICAL);
    sash.setLayout(GridLayoutFactory.fillDefaults().create());
    sash.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    sash.setBackground(GUIToolkit.FG);/*  w w  w.  jav a2s  . c  om*/

    Composite topPanel = GUIToolkit.INSTANCE.createComposite(detailsPanel, SWT.DOUBLE_BUFFERED);
    topPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    topPanel.setLayoutData(GridDataFactory.fillDefaults().grab(false, false).create());

    Composite timeDetails = GUIToolkit.INSTANCE.createComposite(topPanel, SWT.DOUBLE_BUFFERED);
    timeDetails.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());
    timeDetails.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.END, SWT.CENTER).grab(true, false).create());

    Composite masterButtons = GUIToolkit.INSTANCE.createComposite(topPanel, SWT.DOUBLE_BUFFERED);
    masterButtons.setLayout(GridLayoutFactory.fillDefaults().create());
    masterButtons.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(true, false).create());

    final Button playStopButton = new Button(masterButtons, SWT.TOGGLE);
    playStopButton.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(64, 64).minSize(64, 64).create());
    playStopButton.setForeground(ColorsUtil.BG);
    playStopButton.setImage(playImageBig);
    playStopButton.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (playStopButton.getSelection()) {
                playStopButton.setImage(stopImageBig);
            } else {
                playStopButton.setImage(playImageBig);
            }
            for (AudioScene s : project.getScenes()) {
                for (AudioClip c : s.getClips()) {
                    if (c != null) {
                        AudioSound sound = c.getSound();
                        AudioTrack track = c.getTrack();
                        if (sound instanceof AudioSound && track instanceof AudioTrack) {
                            if (track.getChannel() instanceof AudioChannel) {
                                AudioChannel channel = (AudioChannel) track.getChannel();
                                if (channel != null && channel.getFmodex() != null) {
                                    if (AudioUtils.INSTANCE.isPlaying(channel)) {
                                        channel.getFmodex().setPaused(true);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

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

    Composite upPanel = GUIToolkit.INSTANCE.createComposite(topPanel, SWT.SHADOW_ETCHED_IN);
    upPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    upPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());

    Composite vPanel = GUIToolkit.INSTANCE.createComposite(upPanel, SWT.SHADOW_ETCHED_IN);
    vPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    vPanel.setLayoutData(GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(true, false).create());

    masterVolume = new UbiKnob(vPanel, SWT.HORIZONTAL);
    masterVolume.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(48, 48).grab(false, false).create());
    masterVolume.setMax(100f);
    masterVolume.setSelection(50);
    masterVolume.addSelectionListener(new UbiSelectionListener() {
        @Override
        public void handle() {
            float value = new Float(masterVolume.getSelection()) / 100f;
            //            if (value != liveController.getLiveApp().getMasterTrack().getVolume()) {
            //               liveController.getLiveApp().getMasterTrack().setVolume(value);
            //            }
        }
    });

    Label masterVolumeLabel = GUIToolkit.INSTANCE.createLabel(vPanel, "Vol");
    masterVolumeLabel.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(false, false).create());

    Composite pPanel = GUIToolkit.INSTANCE.createComposite(upPanel, SWT.DOUBLE_BUFFERED);
    pPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).create());
    pPanel.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).grab(true, false).create());

    masterPan = new UbiKnob(pPanel, SWT.HORIZONTAL);
    masterPan.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(48, 48).grab(false, false).create());
    masterPan.setMax(100f);
    masterPan.setSelection(50);
    masterPan.addSelectionListener(new UbiSelectionListener() {
        @Override
        public void handle() {
            float value = new Float(masterPan.getSelection() - 50) / 50f;
            //            if (value != liveController.getLiveApp().getMasterTrack().getPan()) {
            //               liveController.getLiveApp().getMasterTrack().setPan(value);
            //            }
        }
    });
    //      masterPan.addMenuAction(
    //         new LinkOscAbletonCommandAction(
    //            masterPan, 
    //            ABLETON_OSC_MAPPING.MASTER_VOLUME.getLiteral(),
    //            100f
    //         )
    //      );

    Label masterPanLabel = GUIToolkit.INSTANCE.createLabel(pPanel, "Pan");
    masterPanLabel.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).grab(false, false).create());

    //
    // Vu Meters
    //

    Composite vuMetersPanel = GUIToolkit.INSTANCE.createComposite(upPanel, SWT.DOUBLE_BUFFERED);
    vuMetersPanel.setLayout(GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(2).create());
    vuMetersPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());

    masterVu = new UbiVuMeter(vuMetersPanel, SWT.VERTICAL);
    masterVu.setLevel(0);
    masterVu.setMax(100);
    masterVu.setLayout(GridLayoutFactory.fillDefaults().create());
    masterVu.setLayoutData(
            GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.TOP).hint(20, 250).grab(true, false).create());

    Composite tracksPanel = GUIToolkit.INSTANCE.createComposite(sash, SWT.DOUBLE_BUFFERED);
    tracksPanel.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).create());
    tracksPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    subDetailsViewer = GUIToolkit.INSTANCE.createTreeViewer(tracksPanel, SWT.FULL_SELECTION);
    subDetailsViewer.setLabelProvider(fmodexLabelProvider);

    FmodexContentProvider fmodexContentProvider = new FmodexContentProvider();

    subDetailsViewer.setContentProvider(fmodexContentProvider);
    subDetailsViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    subDetailsViewer.getTree().setForeground(GUIToolkit.FG);
    subDetailsViewer.getTree().setBackground(GUIToolkit.BG);
    subDetailsViewer.getTree().setHeaderVisible(true);
    subDetailsViewer.getTree().setLinesVisible(true);
    subDetailsViewer.setInput(project);

    //
    // Drag and drop support
    //

    Transfer[] dndTransferTypes = new Transfer[] { FmodexAudioFileTransfert.INSTANCE };

    subDetailsViewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT, dndTransferTypes,
            new FmodexAudioFileDragAdapter(subDetailsViewer));
    subDetailsViewer.addDropSupport(DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT, dndTransferTypes,
            new net.sf.smbt.ui.audio.dnd.FmodexAudioFileDropAdapter(subDetailsViewer));

    subDetailsViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            doubleClickAction2.run();
        }
    });

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(subDetailsViewer,
            new FocusCellOwnerDrawHighlighter(subDetailsViewer) {
                @Override
                public ViewerCell getFocusCell() {
                    ViewerCell cell = super.getFocusCell();
                    handleClipDetails(cell.getElement(), cell.getColumnIndex());
                    return cell;
                }
            });

    UIJob refreshDetailsJob = new UbiJob("Refresh Details") {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            synchronized (project) {
                synchronized (project.getTracks()) {
                    for (AudioTrack t : treeColumnsMap.keySet()) {
                        if (!project.getTracks().contains(t)) {
                            TreeViewerColumn col = treeColumnsMap.get(t);
                            treeColumnsMap.remove(t);
                            col.getColumn().dispose();

                            XUITrack xui = xuiTrackMap.get(t);
                            xuiTrackMap.remove(t);
                            xui.dispose();
                        }
                    }
                    int i = 1;
                    for (AudioTrack track : project.getTracks()) {
                        if (!treeColumnsMap.containsKey(track)) {
                            TreeViewerColumn tc = createTableViewerColumn("Track " + i, 110);
                            treeColumnsMap.put(track, tc);
                            xuiTrackMap.put(track, new XUITrack(xuiPanel, track, tc, project));
                        } else {
                            treeColumnsMap.get(track).getColumn().setText("Track " + i);
                            int w = treeColumnsMap.get(track).getColumn().getWidth();
                            Rectangle rect = xuiTrackMap.get(track).getBounds();
                            xuiTrackMap.get(track).setBounds(rect.x, rect.y, w, rect.height);
                            GridData gd = (GridData) xuiTrackMap.get(track).getLayoutData();
                            gd.horizontalIndent = 0;
                            gd.widthHint = w;
                            gd.minimumWidth = SWT.DEFAULT;
                        }
                        i++;
                    }
                    xuiPanelLayout.numColumns = project.getTracks().size();
                    xuiPanel.layout(true);
                    if (subDetailsViewer != null && subDetailsViewer.getContentProvider() != null) {
                        if (subDetailsViewer.getInput() != project) {
                            subDetailsViewer.setInput(project);
                            deviceWidgetContainer.layout(true);
                        }
                        subDetailsViewer.refresh(true);
                    }
                    devicesPanel.setVisible(true);
                }
            }
            schedule(1000);
            return Status.OK_STATUS;
        }
    };
    refreshDetailsJob.setSystem(true);
    refreshDetailsJob.setPriority(Job.INTERACTIVE);
    refreshDetailsJob.schedule(1000);

    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(
            subDetailsViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return false;
        }
    };

    TreeViewerEditor.create(subDetailsViewer, focusCellManager, actSupport,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    scXui = GUIToolkit.INSTANCE.createScrolledComposite(sash);
    scXui.setLayout(GridLayoutFactory.fillDefaults().create());
    scXui.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    scXui.getParent().setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));

    xuiPanel = GUIToolkit.INSTANCE.createComposite(scXui, SWT.DOUBLE_BUFFERED);
    xuiPanelLayout = GridLayoutFactory.fillDefaults().numColumns(16).equalWidth(false).margins(0, 0)
            .extendedMargins(0, 0, 0, 0).spacing(0, 0).create();
    xuiPanel.setLayout(xuiPanelLayout);
    xuiPanel.setLayoutData(GridDataFactory.fillDefaults().grab(false, true).create());

    scXui.setExpandVertical(true);
    scXui.setExpandHorizontal(true);
    scXui.setAlwaysShowScrollBars(true);
    scXui.setOrientation(SWT.VERTICAL);

    scXui.setContent(xuiPanel);
    scXui.addControlListener(new ControlAdapter() {
        public void controlResized(ControlEvent e) {
            Rectangle r = sash.getClientArea();
            scXui.setMinSize(xuiPanel.computeSize(r.width, SWT.DEFAULT));
        }
    });

    devicesPanel = GUIToolkit.INSTANCE.createComposite(sash, SWT.DOUBLE_BUFFERED);
    devicesPanel.setLayout(GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(false).create());
    devicesPanel.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    bottomSash = new SashForm(devicesPanel, SWT.HORIZONTAL);
    bottomSash.setLayout(GridLayoutFactory.fillDefaults().create());
    bottomSash.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    bottomSash.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));

    devicesViewer = GUIToolkit.INSTANCE.createTreeViewer(bottomSash, SWT.FULL_SELECTION);
    devicesViewer.setLabelProvider(new LabelProvider() {
        @Override
        public Image getImage(Object element) {
            return deviceImage;
        }

        @Override
        public String getText(Object element) {
            if (element instanceof Device) {
                return ((Device) element).getID();
            }
            return "???";
        }
    });

    devicesViewer.setContentProvider(new DevicesContentProvider());
    devicesViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    sc = GUIToolkit.INSTANCE.createScrolledComposite(bottomSash);
    sc.setLayout(GridLayoutFactory.fillDefaults().create());
    sc.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    sc.getParent().setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));

    deviceWidgetContainer = GUIToolkit.INSTANCE.createComposite(sc, SWT.DOUBLE_BUFFERED);
    deviceWidgetContainer.setLayout(GridLayoutFactory.fillDefaults().create());
    deviceWidgetContainer.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    deviceWidgetContainer.getParent().setBackground(GUIToolkit.BG);
    deviceWidgetContainer.addControlListener(new ControlListener() {
        @Override
        public void controlResized(ControlEvent e) {
        }

        @Override
        public void controlMoved(ControlEvent e) {
        }
    });

    sc.setExpandVertical(true);
    sc.setAlwaysShowScrollBars(true);
    sc.setOrientation(SWT.VERTICAL);

    sc.setContent(deviceWidgetContainer);
    sc.addControlListener(new ControlAdapter() {
        public void controlResized(ControlEvent e) {
            Rectangle r = sc.getClientArea();
            sc.setMinSize(devicesPanel.computeSize(r.width, SWT.DEFAULT));
        }
    });

    hbarSc = new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            scXui.getHorizontalBar().removeSelectionListener(hbarScXui);
            scXui.getHorizontalBar().setSelection(e.x);
            scXui.getHorizontalBar().addSelectionListener(hbarScXui);
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {

        }
    };
    if (scXui.getHorizontalBar() != null) {
        sc.getHorizontalBar().addSelectionListener(hbarSc);
    }
    Rectangle r = sc.getClientArea();
    sc.setMinSize(devicesPanel.computeSize(r.width, SWT.DEFAULT));

    devicesViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection selection = devicesViewer.getSelection();
            if (selection instanceof IStructuredSelection) {
                Object obj = null;
                StructuredSelection ssel = (StructuredSelection) selection;
                if (!ssel.isEmpty()) {
                    obj = ssel.getFirstElement();
                }
                AbstractDeviceWidget w = FmodexWidgetManager.INSTANCE.getNullWidget();
                if (obj instanceof Device) {
                    device = (Device) obj;
                    w = FmodexWidgetManager.INSTANCE.getWidget(device.getID());
                }

                if (w instanceof AbstractDeviceWidget) {
                    deviceWidgetContainer.setVisible(true);
                    AbstractDeviceWidget widget = (AbstractDeviceWidget) w;
                    for (Control c : deviceWidgetContainer.getChildren()) {
                        c.setVisible(false);
                        if (!c.isDisposed()) {
                            c.dispose();
                        }
                    }
                    Control control = widget.createControl(deviceWidgetContainer, SWT.NONE);
                    if (!control.isDisposed() && control != null) {
                        control.setVisible(true);
                    }
                    if (device != null) {
                        if (device.getTrack() != null && device.getTrack().getChannel() != null
                                && clip != null) {
                            IChannel channel = device.getTrack().getChannel();
                            if (channel instanceof AudioChannel) {
                                widget.init((AudioChannel) channel, clip.getSound());
                            }
                        }
                    }
                    deviceWidgetContainer.layout(true);
                    widget.redraw();
                } else {
                    sc.setVisible(false);
                    for (Control c : sc.getChildren()) {
                        c.setVisible(false);
                        if (!c.isDisposed()) {
                            c.dispose();
                        }
                    }
                }
                sc.redraw();
            } else {
                deviceWidgetContainer.setVisible(false);
                for (Control c : deviceWidgetContainer.getChildren()) {
                    c.setVisible(false);
                    if (!c.isDisposed()) {
                        c.dispose();
                    }
                }
            }
        }
    });

    bottomSash.setWeights(new int[] { 1, 5 });

    if (devicesPanel != null) {
        deviceWidgetContainer.setVisible(true);
        devicesPanel.setVisible(true);
        devicesPanel.setSize(sash.getSize().x, 250);
        devicesPanel.layout(true);
        deviceWidgetContainer.setSize(sash.getSize().x, 250);
        deviceWidgetContainer.redraw();
        deviceWidgetContainer.layout(true);
        deviceWidgetContainer.redraw();
        devicesPanel.layout(true);
        devicesPanel.redraw();

        if (devicesViewer.getTree() != null && devicesViewer.getTree().getItemCount() > 0) {
            @SuppressWarnings("rawtypes")
            List lst = (List) devicesViewer.getInput();
            devicesViewer.getTree().select(devicesViewer.getTree().getItem(0));
            subDetailsViewer.refresh(true);
        }
        devicesPanel.layout(true);
        devicesPanel.redraw();
        for (Control c : devicesPanel.getChildren()) {
            if (c instanceof Control) {
                c.redraw();
            }
        }
    }

    sash.setWeights(new int[] { 2, 2, 2 });
}

From source file:net.sf.smbt.ui.btc.views.MTGoxView.java

License:LGPL

@Override
public void createPartControl(Composite parent) {
    Composite container = GUIToolkit.INSTANCE.createComposite(parent);
    container.setBackground(GUIToolkit.BG);
    container.setForeground(GUIToolkit.FG);
    container.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());
    container.setLayoutData(GridDataFactory.fillDefaults().create());

    currencyComboViewer = new ComboViewer(container);
    currencyComboViewer.setContentProvider(new ArrayContentProvider());
    currencyComboViewer.setLabelProvider(new LabelProvider());
    currencyComboViewer.setInput(BtcCurrency.VALUES);
    currencyComboViewer.setSelection(new StructuredSelection(BtcCurrency.EUR));
    currencyComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override//from www  .j av a  2  s .c o  m
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection s = event.getSelection();
            if (s instanceof StructuredSelection) {
                BtcCurrency currency = (BtcCurrency) ((StructuredSelection) s).getFirstElement();
                mtgoxController.getMTGox().getMarket().setCurrency(currency);
                mtgoxController.getMTGox().getTrend().clear();
            }
        }
    });
    currencyComboViewer.getCombo().setEnabled(false);

    wallInfoLabel = new Label(container, SWT.NONE);
    wallInfoLabel.setLayoutData(GridDataFactory.fillDefaults().create());
    wallInfoLabel.setFont(medFont);
    wallInfoLabel.setForeground(lightBlue);

    wallInfoLabel.setText("Balance : " + "???" + " (0.6% fee)");

    SashForm sash = new SashForm(container, SWT.BORDER | SWT.VERTICAL);
    sash.setLayout(GridLayoutFactory.fillDefaults().create());
    sash.setLayoutData(GridDataFactory.fillDefaults().span(2, 1).grab(true, true).create());
    sash.setBackground(GUIToolkit.FG);

    transactionTreeViewer = new TreeViewer(sash);

    transactionTreeViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    transactionTreeViewer.getControl().setFont(medFont);
    transactionTreeViewer.getControl().setBackground(ColorConstants.darkGray);
    transactionTreeViewer.getControl().setForeground(ColorConstants.lightBlue);

    transactionTreeViewer
            .setLabelProvider(new AdapterFactoryLabelProvider(new MTGoxCompseableAdapterFactory()) {
                @Override
                public String getText(Object object) {
                    return super.getText(object);
                }
            });
    transactionTreeViewer.setContentProvider(new WalletOrdersContentProvider());
    transactionTreeViewer.getTree().setHeaderVisible(true);
    transactionTreeViewer.getTree().setLinesVisible(true);

    transactionTreeViewer.setInput(mtgoxController.getMTGox());

    createTableViewerColumn("Order", 100);
    createTableViewerColumn("type", 100);
    createTableViewerColumn("BTC", 100);
    createTableViewerColumn("Value", 100);
    createTableViewerColumn("Status", 100);
    createTableViewerColumn("Date", 100);

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(transactionTreeViewer,
            new FocusCellOwnerDrawHighlighter(transactionTreeViewer) {
                @Override
                public ViewerCell getFocusCell() {
                    ViewerCell cell = super.getFocusCell();
                    //handleClipDetails(cell.getElement(), cell.getColumnIndex());
                    return cell;
                }
            });

    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(
            transactionTreeViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return false;
        }
    };

    TreeViewerEditor.create(transactionTreeViewer, focusCellManager, actSupport,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    cancelOrderAction = new Action("Cancel Order",
            Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/cancel.png")) {
        public void run() {
            ISelection sel = transactionTreeViewer.getSelection();
            for (Object o : ((IStructuredSelection) sel).toArray()) {
                if (o instanceof Order) {
                    Order order = (Order) o;
                    String oid = order.getOid();
                    if (mtgoxController != null) {
                        mtgoxController.cancelOrder(BtcCurrency.BTC, mtgoxController.getMTGox().getCurrency(),
                                oid);
                        refreshJob.schedule(250);
                    }
                }
            }
        };
    };

    hookContextMenu();

    hitoryTreeViewer = new TreeViewer(sash);

    hitoryTreeViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    hitoryTreeViewer.getControl().setFont(medFont);
    hitoryTreeViewer.getControl().setBackground(ColorConstants.darkGray);
    hitoryTreeViewer.getControl().setForeground(ColorConstants.lightBlue);

    hitoryTreeViewer.setLabelProvider(new AdapterFactoryLabelProvider(new MTGoxCompseableAdapterFactory()) {
        @Override
        public String getText(Object object) {
            return super.getText(object);
        }
    });
    hitoryTreeViewer.setContentProvider(new WalletHistoryContentProvider());
    hitoryTreeViewer.getTree().setHeaderVisible(true);
    hitoryTreeViewer.getTree().setLinesVisible(true);

    hitoryTreeViewer.setInput(mtgoxController.getMTGox());

    createHistoryTableViewerColumn("Index", 100);
    createHistoryTableViewerColumn("Info", 100);
    createHistoryTableViewerColumn("type", 100);
    createHistoryTableViewerColumn("Balance", 100);
    createHistoryTableViewerColumn("Date", 100);
    createHistoryTableViewerColumn("Value", 100);

    sash.setWeights(new int[] { 50, 50 });

    init();
}

From source file:org.dawnsci.common.widgets.gda.function.FunctionTreeViewer.java

License:Open Source License

public FunctionTreeViewer(final Composite parent, IFunctionDescriptorProvider functionDescriptorProvider) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new FillLayout());
    treeViewer = new TreeViewer(composite, SWT.BORDER | SWT.FULL_SELECTION);

    treeViewer.getTree().setLinesVisible(true);
    treeViewer.getTree().setHeaderVisible(true);
    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(treeViewer,
            new FocusCellOwnerDrawHighlighter(treeViewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(treeViewer) {
        @Override//from  ww w  .  j  av a 2 s .  c o  m
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            // TODO see AbstractComboBoxCellEditor for how list is made visible
            return super.isEditorActivationEvent(event)
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && (event.keyCode == KeyLookupFactory.getDefault()
                                    .formalKeyLookup(IKeyLookup.ENTER_NAME)));
        }
    };

    TreeViewerEditor.create(treeViewer, focusCellManager, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    createFunctionNameColumn();
    createParameterValueColumn("Value", COLUMN.VALUE, false, new IGetSetValueOnParameterModel() {
        @Override
        public void setValue(ParameterModel param, String value) {
            param.setParameterValue(value);
        }

        @Override
        public double getValue(ParameterModel param) {
            return param.getParameterValue();
        }

        @Override
        public String getErrorValue(ParameterModel param) {
            return param.getParameterValueError();
        }
    });
    createParameterValueColumn("Lower Limit", COLUMN.LOWERLIMIT, true, new IGetSetValueOnParameterModel() {
        @Override
        public void setValue(ParameterModel param, String value) {
            param.setParameterLowerLimit(value);
        }

        @Override
        public double getValue(ParameterModel param) {
            return param.getParameterLowerLimit();
        }

        @Override
        public String getErrorValue(ParameterModel param) {
            return param.getParameterLowerLimitError();
        }
    });
    createParameterValueColumn("Upper Limit", COLUMN.UPPERLIMIT, true, new IGetSetValueOnParameterModel() {
        @Override
        public void setValue(ParameterModel param, String value) {
            param.setParameterUpperLimit(value);
        }

        @Override
        public double getValue(ParameterModel param) {
            return param.getParameterUpperLimit();
        }

        @Override
        public String getErrorValue(ParameterModel param) {
            return param.getParameterUpperLimitError();
        }
    });

    createFittedParamsColumn();

    treeViewer.setContentProvider(new FunctionTreeViewerContentProvider());
    treeViewer.expandToLevel(2);
    // IFunctions are not safely hashable for this use (despite their having
    // a custom hashCode)
    treeViewer.setUseHashlookup(false);
    setInput(null);
    this.functionDescriptorProvider = functionDescriptorProvider;
    functionSelectionEditingSupport.setFunctionDesciptorProvider(functionDescriptorProvider);

    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                ISelection realSelection = convertSelection(selection);
                fireSelectionChanged(new SelectionChangedEvent(FunctionTreeViewer.this, realSelection));
            }

        }
    });
}