List of usage examples for org.eclipse.jface.viewers StructuredSelection getFirstElement
@Override
public Object getFirstElement()
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(); } } } }