Example usage for org.eclipse.jface.viewers StructuredSelection getFirstElement

List of usage examples for org.eclipse.jface.viewers StructuredSelection getFirstElement

Introduction

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

Prototype

@Override
    public Object getFirstElement() 

Source Link

Usage

From source file:net.refractions.udig.tutorials.featureeditor.CountryPanelFormCellEditor.java

License:Open Source License

private void applyChanges() {

    if (!verifyChanges()) {
        try {//from ww w . j a v a  2 s  .c o m

            // Set feature value for NAME_FORMA
            editedFeature.setAttribute(NAME_FORMA, nameFormal.getText());

            // Set feature value for NAME_SORT
            editedFeature.setAttribute(NAME_SORT, nameSort.getText());

            // Set feature value for POP_EST
            editedFeature.setAttribute(POP_EST, Double.valueOf(population.getText()));

            // Set feature value for TYPE
            editedFeature.setAttribute(TYPE, (type.getSelectionIndex() == 0) ? TYPE_SOV_LBL : TYPE_COU_LBL);

            // Set feature value for COLOR_MAP
            StructuredSelection colorSelection = (StructuredSelection) colorMap.getSelection();
            editedFeature.setAttribute(COLOR_MAP, colorSelection.getFirstElement());

        } catch (IllegalAttributeException e1) {
            // shouldn't happen.
        }

        final CompositeCommand compComm = new CompositeCommand();
        //Sets the feature (with the edited values) used in the view as the editFeature
        compComm.getCommands().add(new SetEditFeatureCommand(editedFeature));
        //Write the changes to the actual dataset
        compComm.getCommands().add(new WriteEditFeatureCommand());
        context.sendASyncCommand(compComm);

        setEnabled(false);
    }

}

From source file:net.refractions.udig.ui.filter.IExpressionViewer.java

License:Open Source License

/**
 * Extracts a expression from the selection making use of {@link #setExpression(Expression)} to update the viewer.
 * //from w w  w.  j  av  a2  s .co m
 * @param selection Selection defining Expression
 * @param reveal <code>true</code> if the selection is to be made visible, and
 *        <code>false</code> otherwise
 */
public void setSelection(ISelection selection, boolean reveal) {
    if (selection != null && selection instanceof StructuredSelection) {
        StructuredSelection sel = (StructuredSelection) selection;
        Object element = sel.getFirstElement();
        if (element instanceof Expression) {
            setExpression((Expression) element);
            return;
        }
    }
    setExpression(Expression.NIL);
}

From source file:net.refractions.udig.ui.filter.IFilterViewer.java

License:Open Source License

/**
 * Extracts a filter from the selection making use of {@link #setFilter(Filter)} to update the viewer.
 * /*from w  ww .j  a va 2  s . c o  m*/
 * @param selection Selection defining Filter
 * @param reveal <code>true</code> if the selection is to be made visible, and
 *        <code>false</code> otherwise
 */
public void setSelection(ISelection selection, boolean reveal) {
    if (selection != null && selection instanceof StructuredSelection) {
        StructuredSelection sel = (StructuredSelection) selection;
        Object element = sel.getFirstElement();
        if (element instanceof Filter) {
            setFilter((Filter) element);
            return;
        }
    }
    setFilter(Filter.EXCLUDE);
}

From source file:net.sf.colorer.eclipse.view.HRCRegionsTreeView.java

License:LGPL

Region getSelectedRegion(ISelection selection) {
    if (selection instanceof StructuredSelection) {
        StructuredSelection sel = (StructuredSelection) selection;
        if (sel.isEmpty()) {
            return null;
        }//from w  w  w. j  a  va2s .c  o  m
        Region region = (Region) sel.getFirstElement();
        return region;
    }
    return null;
}

From source file:net.sf.jmoney.reconciliation.reconcilePage.StatementSection.java

License:Open Source License

@SuppressWarnings("unchecked")
public StatementSection(Composite parent, FormToolkit toolkit, ReconcileEditor page,
        RowSelectionTracker<EntryRowControl> rowTracker) {
    super(parent, toolkit, Section.TITLE_BAR);
    getSection().setText("Entries Shown on Statement");
    fPage = page;/*from   ww w .j av a  2 s.c om*/
    this.toolkit = toolkit;

    container = toolkit.createComposite(getSection());

    reconciledTableContents = new IEntriesContent() {
        public Collection<Entry> getEntries() {
            Vector<Entry> requiredEntries = new Vector<Entry>();

            // If no statement is set, return an empty collection.
            // The table will not be visible in this situation, but
            // this method will be called and so we must allow for
            // this situation.
            if (fPage.getStatement() == null) {
                return requiredEntries;
            }

            /* The caller always sorts, so there is no point in us returning
             * sorted results.  It may be at some point we decide it is more
             * efficient to get the database to sort for us, but that would
             * only help the first time the results are fetched, it would not
             * help on a re-sort.  It also only helps if the database indexes
             * on the date.      
            CurrencyAccount account = fPage.getAccount();
              Collection<Entry> accountEntries = 
                 account
                  .getSortedEntries(TransactionInfo.getDateAccessor(), false);
            */
            Collection<Entry> accountEntries = fPage.getAccount().getEntries();

            for (Entry entry : accountEntries) {
                BankStatement statement = entry
                        .getPropertyValue(ReconciliationEntryInfo.getStatementAccessor());
                if (fPage.getStatement().equals(statement)) {
                    requiredEntries.add(entry);
                }
            }

            return requiredEntries;
        }

        public boolean isEntryInTable(Entry entry) {
            // If no statement is set, nothing is in the table.
            // The table will not be visible in this situation, but
            // this method will be called and so we must allow for
            // this situation.
            if (fPage.getStatement() == null) {
                return false;
            }

            // This entry is to be shown if both the account and
            // the statement match.
            BankStatement statement = entry.getPropertyValue(ReconciliationEntryInfo.getStatementAccessor());
            return fPage.getAccount().equals(entry.getAccount()) && fPage.getStatement().equals(statement);
        }

        public boolean filterEntry(EntryData data) {
            // No filter here, so entries always match
            return true;
        }

        public long getStartBalance() {
            return openingBalance;
        }

        public Entry createNewEntry(Transaction newTransaction) {
            Entry entryInTransaction = newTransaction.createEntry();
            Entry otherEntry = newTransaction.createEntry();

            setNewEntryProperties(entryInTransaction);

            // TODO: See if this code has any effect, and
            // should this be here at all?
            /*
             * We set the currency by default to be the currency of the
             * top-level entry.
             * 
             * The currency of an entry is not applicable if the entry is an
             * entry in a currency account or an income and expense account
             * that is restricted to a single currency.
             * However, we set it anyway so the value is there if the entry
             * is set to an account which allows entries in multiple currencies.
             * 
             * It may be that the currency of the top-level entry is not
             * known. This is not possible if entries in a currency account
             * are being listed, but may be possible if this entries list
             * control is used for more general purposes. In this case, the
             * currency is not set and so the user must enter it.
             */
            if (entryInTransaction.getCommodityInternal() instanceof Currency) {
                otherEntry.setIncomeExpenseCurrency((Currency) entryInTransaction.getCommodityInternal());
            }

            return entryInTransaction;
        }

        private void setNewEntryProperties(Entry newEntry) {
            // It is assumed that the entry is in a data manager that is a direct
            // child of the data manager that contains the account.
            TransactionManager tm = (TransactionManager) newEntry.getDataManager();
            newEntry.setAccount(tm.getCopyInTransaction(fPage.getAccount()));

            newEntry.setPropertyValue(ReconciliationEntryInfo.getStatementAccessor(), fPage.getStatement());
        }
    };

    // We manage the layout of 'container' ourselves because we want either
    // the 'containerOfTableAndButtons' to be visible or the 'no statement'
    // message to be visible.  There is no suitable layout for
    // this.  Therefore clear out the layout manager.
    container.setLayout(null);

    // Create the control that will be visible if no session is open
    noStatementMessage = new Label(container, SWT.WRAP);
    noStatementMessage.setText(ReconciliationPlugin.getResourceString("EntriesSection.noStatementMessage"));
    noStatementMessage.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_RED));

    // Load the 'unreconcile' indicator
    URL installURL = ReconciliationPlugin.getDefault().getBundle().getEntry("/icons/unreconcile.gif");
    final Image unreconcileImage = ImageDescriptor.createFromURL(installURL).createImage();
    parent.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            unreconcileImage.dispose();
        }
    });

    CellBlock<EntryData, EntryRowControl> unreconcileButton = new CellBlock<EntryData, EntryRowControl>(20, 0) {

        @Override
        public IPropertyControl<EntryData> createCellControl(Composite parent, final RowControl rowControl,
                final EntryRowControl coordinator) {
            ButtonCellControl cellControl = new ButtonCellControl(parent, coordinator, unreconcileImage,
                    "Remove Entry from this Statement") {
                @Override
                protected void run(EntryRowControl rowControl) {
                    unreconcileEntry(rowControl);
                }
            };

            // Allow entries to be dropped in the statement table in the account to be moved from the unreconciled list
            final DropTarget dropTarget = new DropTarget(cellControl.getControl(), DND.DROP_MOVE);

            // Data is provided using a local reference only (can only drag and drop
            // within the Java VM)
            Transfer[] types = new Transfer[] { LocalSelectionTransfer.getTransfer() };
            dropTarget.setTransfer(types);

            dropTarget.addDropListener(new DropTargetAdapter() {

                @Override
                public void dragEnter(DropTargetEvent event) {
                    /*
                     * We want to check what is being dragged, in case it is not an
                     * EntryData object.  Unfortunately this is not available on all platforms,
                     * only on Windows.  The following call to the nativeToJava method will
                     * return the ISelection object on Windows but null on other platforms.
                     * If we get null back, we assume the drop is valid.
                     */
                    ISelection selection = (ISelection) LocalSelectionTransfer.getTransfer()
                            .nativeToJava(event.currentDataType);
                    if (selection == null) {
                        // The selection cannot be determined on this platform - accept the drop
                        return;
                    }

                    if (selection instanceof StructuredSelection) {
                        StructuredSelection structured = (StructuredSelection) selection;
                        if (structured.size() == 1 && structured.getFirstElement() instanceof Entry) {
                            // We do want to accept the drop
                            return;
                        }
                    }

                    // we don't want to accept drop
                    event.detail = DND.DROP_NONE;
                }

                @Override
                public void dragLeave(DropTargetEvent event) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void dragOperationChanged(DropTargetEvent event) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void dragOver(DropTargetEvent event) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void drop(DropTargetEvent event) {
                    if (LocalSelectionTransfer.getTransfer().isSupportedType(event.currentDataType)) {
                        ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
                        Entry sourceEntry = (Entry) ((StructuredSelection) selection).getFirstElement();
                        EntryRowControl dropRow = coordinator;

                        /*
                         * Merge data from dragged transaction into the target transaction
                         * and delete the dragged transaction.
                         */
                        boolean success = mergeTransaction(sourceEntry, dropRow);
                        if (!success) {
                            event.detail = DND.DROP_NONE;
                        } else {
                            dropRow.commitChanges("Merge Entries");
                        }
                    }
                }

                @Override
                public void dropAccept(DropTargetEvent event) {
                    // TODO Auto-generated method stub
                }
            });

            fReconciledEntriesControl.getControl().addDisposeListener(new DisposeListener() {
                public void widgetDisposed(DisposeEvent e) {
                    dropTarget.dispose();
                }
            });

            return cellControl;
        }

        @Override
        public void createHeaderControls(Composite parent, EntryData entryData) {
            /*
             * All CellBlock implementations must create a control because
             * the header and rows must match. Maybe these objects could
             * just point to the header controls, in which case this would
             * not be necessary.
             * 
             * Note also we use Label, not an empty Composite, because we
             * don't want a preferred height that is higher than the labels.
             */
            new Label(parent, SWT.NONE);
        }
    };

    IndividualBlock<EntryData, RowControl> transactionDateColumn = PropertyBlock
            .createTransactionColumn(TransactionInfo.getDateAccessor());
    CellBlock<EntryData, BaseEntryRowControl> debitColumnManager = DebitAndCreditColumns
            .createDebitColumn(fPage.getAccount().getCurrency());
    CellBlock<EntryData, BaseEntryRowControl> creditColumnManager = DebitAndCreditColumns
            .createCreditColumn(fPage.getAccount().getCurrency());
    CellBlock<EntryData, BaseEntryRowControl> balanceColumnManager = new BalanceColumn(
            fPage.getAccount().getCurrency());

    /*
     * Setup the layout structure of the header and rows.
     */
    Block<EntryData, EntryRowControl> rootBlock = new HorizontalBlock<EntryData, EntryRowControl>(
            unreconcileButton, transactionDateColumn,
            PropertyBlock.createEntryColumn(EntryInfo.getValutaAccessor()),
            PropertyBlock.createEntryColumn(EntryInfo.getCheckAccessor()),
            PropertyBlock.createEntryColumn(EntryInfo.getMemoAccessor()),
            new OtherEntriesButton(new HorizontalBlock<Entry, ISplitEntryContainer>(
                    new SingleOtherEntryPropertyBlock(EntryInfo.getAccountAccessor()),
                    new SingleOtherEntryPropertyBlock(EntryInfo.getMemoAccessor(),
                            NLS.bind(Messages.StatementSection_EntryDescription, null)),
                    new SingleOtherEntryPropertyBlock(EntryInfo.getAmountAccessor()))),
            debitColumnManager, creditColumnManager, balanceColumnManager);

    // Create the table control.
    IRowProvider rowProvider = new ReusableRowProvider(rootBlock);
    fReconciledEntriesControl = new EntriesTable<EntryData>(container, rootBlock, reconciledTableContents,
            rowProvider, fPage.getAccount().getSession(), transactionDateColumn, rowTracker) {
        @Override
        protected EntryData createEntryRowInput(Entry entry) {
            return new EntryData(entry, session.getDataManager());
        }

        @Override
        protected EntryData createNewEntryRowInput() {
            return new EntryData(null, session.getDataManager());
        }
    };

    // TODO: do not duplicate this.
    if (fPage.getStatement() == null) {
        noStatementMessage.setSize(container.getSize());
        //fReconciledEntriesControl.getControl().setSize(0, 0);
        fReconciledEntriesControl.setSize(0, 0);
    } else {
        noStatementMessage.setSize(0, 0);
        //fReconciledEntriesControl.getControl().setSize(containerOfEntriesControl1.getSize());
        fReconciledEntriesControl.setSize(container.getSize());
        fReconciledEntriesControl.layout(true); // ??????
    }

    // There is no layout set on the navigation view.
    // Therefore we must listen for changes to the size of
    // the navigation view and adjust the size of the visible
    // control to match.
    container.addControlListener(new ControlAdapter() {
        @Override
        public void controlResized(ControlEvent e) {
            if (fPage.getStatement() == null) {
                noStatementMessage.setSize(container.getSize());
                fReconciledEntriesControl.setSize(0, 0);
            } else {
                noStatementMessage.setSize(0, 0);
                fReconciledEntriesControl.setSize(container.getSize());
                fReconciledEntriesControl.layout(true); // ??????
            }
        }
    });

    getSection().setClient(container);
    toolkit.paintBordersFor(container);
    refresh();
}

From source file:net.sf.simpletest.eclipse.ui.ResultsInfoComposite.java

License:Open Source License

private void handleDoubleClick(DoubleClickEvent e) {
    StructuredSelection ssel = (StructuredSelection) treeViewer.getSelection();

    if (ssel == null) {
        return;/*from  w  w  w . j a  va2 s  .  c o  m*/
    }
    //TODO: handle cases of isel -- file or grouptest
    Object osel = ssel.getFirstElement();
    int line = 1;
    String testPath = "";
    if (osel instanceof TestInstance) {
        TestInstance ti = (TestInstance) ssel.getFirstElement();
        line = ti.getLine();
        testPath = ti.getTestFilePath();
    } else if (osel instanceof TestCase) {
        //TODO: search the file for the right function
        TestCase tc = (TestCase) ssel.getFirstElement();
        line = tc.getLine();
        testPath = tc.getTestFilePath();
    } else if (osel instanceof TestGroup) {
        line = 1;
        TestGroup tg = (TestGroup) ssel.getFirstElement();
        testPath = tg.getId();
    }
    if ("".equals(testPath)) {
        return;
    }
    Action action = new OpenEditorAtLineAction(testPath, line);
    if (action.isEnabled()) {
        action.run();
    }

}

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  ww  w  . j  a  v a  2s. co 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);//from  ww  w  .  j  a  v  a  2  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());

    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.dmx.controller.dialog.DMXFixtureSelectionDialog.java

License:LGPL

protected Control createDialogArea(Composite parent) {
    Composite container = (Composite) super.createDialogArea(parent);
    container.setLayout(GridLayoutFactory.fillDefaults().create());
    container.setLayoutData(GridDataFactory.fillDefaults().hint(200, 350).grab(true, true).create());

    final FilteredTree filteredTree = GUIToolkit.INSTANCE.createFilteredTree(container,
            SWT.MULTI | SWT.FULL_SELECTION, new PatternFilter(), true);
    filteredTree.setLayout(GridLayoutFactory.fillDefaults().create());
    filteredTree.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    filteredTree.getViewer().setContentProvider(new DMXUniverseContentProvider());
    filteredTree.getViewer()//from ww w .java2  s  .  co  m
            .setLabelProvider(new AdapterFactoryLabelProvider(new OpenDMXCompseableAdapterFactory()));

    filteredTree.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection sel = event.getSelection();
            if (sel instanceof StructuredSelection) {
                StructuredSelection ssel = (StructuredSelection) sel;
                if (!ssel.isEmpty()) {
                    Object obj = ssel.getFirstElement();
                    if (obj instanceof FixtureDefinition) {
                        FixtureDefinition fixture = (FixtureDefinition) obj;
                        setResult(Arrays.asList(new FixtureDefinition[] { fixture }));
                    }
                }
            }
        }
    });

    filteredTree.getViewer().setInput(dmxLib);

    // Create label
    createMessageArea(container);

    return container;
}

From source file:net.sf.versiontree.popup.actions.CopyTagAction.java

License:Open Source License

@Override
public void run() {
    if (viewer.getSelection() instanceof StructuredSelection) {
        StructuredSelection selection = (StructuredSelection) viewer.getSelection();
        Object element = selection.getFirstElement();
        if (element instanceof ITag) {
            Clipboard clipboard = new Clipboard(Display.getDefault());
            Object[] data = new Object[] { ((ITag) element).getName() };
            Transfer[] dataTypes = new Transfer[] { TextTransfer.getInstance() };
            try {
                clipboard.setContents(data, dataTypes);
            } catch (SWTError e) {
                if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                    throw e;
                }//from  ww w .  ja  va  2  s.c o m
            } finally {
                clipboard.dispose();
            }
        }
    }
}