List of usage examples for org.eclipse.jface.viewers ViewerCell getColumnIndex
public int getColumnIndex()
From source file:msi.gama.gui.viewers.csv.CSVLabelProvider.java
License:Apache License
/** * @see org.eclipse.jface.viewers.StyledCellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell) *///from ww w .ja va 2s. c o m @Override public void update(final ViewerCell cell) { CSVRow element = (CSVRow) cell.getElement(); int index = cell.getColumnIndex(); String columnText = getColumnText(element, index); cell.setText(columnText); cell.setImage(null); if (searchText != null && searchText.length() > 0) { int intRangesCorrectSize[] = SearchResultStyle.getSearchTermOccurrences(searchText, columnText); List<StyleRange> styleRange = new ArrayList<StyleRange>(); for (int i = 0; i < intRangesCorrectSize.length / 2; i++) { StyleRange myStyleRange = new StyleRange(0, 0, null, searchColor); myStyleRange.start = intRangesCorrectSize[i]; myStyleRange.length = intRangesCorrectSize[++i]; styleRange.add(myStyleRange); } cell.setStyleRanges(styleRange.toArray(new StyleRange[styleRange.size()])); } else { cell.setStyleRanges(null); } super.update(cell); }
From source file:net.certiv.fluentmark.tables.FocusBorderCellHighlighter.java
License:Open Source License
@Override protected void focusCellChanged(ViewerCell newCell, ViewerCell oldCell) { super.focusCellChanged(newCell, oldCell); // Redraw new area if (newCell != null) { Rectangle rect = newCell.getBounds(); int x = newCell.getColumnIndex() == 0 ? 0 : rect.x; int width = newCell.getColumnIndex() == 0 ? rect.x + rect.width : rect.width; // 1 is a fix for Linux-GTK newCell.getControl().redraw(x, rect.y - 1, width, rect.height + 1, true); }/*from w w w.ja va 2s .c o m*/ if (oldCell != null) { Rectangle rect = oldCell.getBounds(); int x = oldCell.getColumnIndex() == 0 ? 0 : rect.x; int width = oldCell.getColumnIndex() == 0 ? rect.x + rect.width : rect.width; // 1 is a fix for Linux-GTK oldCell.getControl().redraw(x, rect.y - 1, width, rect.height + 1, true); } }
From source file:net.karlmartens.ui.viewer.TableEditorActivationStrategy.java
License:Apache License
private boolean isCheckActivationEvent(ColumnViewerEditorActivationEvent event) { if (event.eventType != ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION) return false; final Object source = event.getSource(); if (!(source instanceof ViewerCell)) return false; final ViewerCell cell = (ViewerCell) source; final int columnIdx = cell.getColumnIndex(); final TableColumn column = _viewer.getControl().getColumn(columnIdx); final int style = column.getStyle(); if ((style & SWT.CHECK) == 0) return false; final MouseEvent mEvent = (MouseEvent) event.sourceEvent; final Point eventPt = new Point(mEvent.x, mEvent.y); final TableItem item = _viewer.getItemAt(eventPt); final Rectangle cellBounds = item.getBounds(columnIdx); final Rectangle targetBounds = CheckableCellRenderer.IMAGE_CHECKED.getBounds(); final Rectangle activationBounds = new Rectangle(cellBounds.x, cellBounds.y, targetBounds.width, targetBounds.height);//from w w w . j ava 2s. co m activationBounds.y += Math.max((cellBounds.height - targetBounds.height) / 2, 0); if ((style & SWT.RIGHT) > 0) { activationBounds.x += Math.max(cellBounds.width - targetBounds.width, 0); } else if ((style & SWT.LEFT) > 0) { // nothing to do } else { // default is centered activationBounds.x += Math.max((cellBounds.width - targetBounds.width) / 2, 0); } return activationBounds.contains(eventPt); }
From source file:net.karlmartens.ui.viewer.TableViewerEditor.java
License:Apache License
@Override protected void updateFocusCell(ViewerCell focusCell, ColumnViewerEditorActivationEvent event) { if (event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL) { final Table table = _viewer.getControl(); final int row = table.indexOf((TableItem) focusCell.getItem()); final int col = focusCell.getColumnIndex(); _selectionManager.setFocusCell(new Point(col, row)); }//from w w w . ja v a 2 s .co m }
From source file:net.karlmartens.ui.viewer.TimeSeriesTableValueEditingSupport.java
License:Apache License
private void update(ViewerCell cell, double value) { _viewer.getEditingSupport().setValue(cell.getElement(), computePeriodIndex(cell), value); final TableItem item = (TableItem) cell.getItem(); item.setText(cell.getColumnIndex(), _viewer.getNumberFormat().format(value)); _viewer.getControl().redraw();//w w w . ja va2s . c o m }
From source file:net.karlmartens.ui.viewer.TimeSeriesTableValueEditingSupport.java
License:Apache License
private int computePeriodIndex(ViewerCell cell) { return cell.getColumnIndex() - _viewer.getControl().getFixedColumnCount(); }
From source file:net.roboconf.eclipse.modeler.dialogs.ImportedVariableDialog.java
License:Apache License
@Override protected Control createDialogArea(Composite parent) { // Global UI//from w w w . j a v a2 s .co m Composite bigContainer = (Composite) super.createDialogArea(parent); GridLayoutFactory.swtDefaults().margins(5, 0).applyTo(bigContainer); bigContainer.setLayoutData(new GridData(GridData.FILL_BOTH)); getShell().setText("Imported Variables"); setTitle("Imported Variables"); setMessage("Edit the variables to import."); // Find all the variables for (RoboconfFacet type : findAllFacetsAndComponents()) { Collection<String> varNames = findAllExportedVariables(type); if (!type.getExports().isEmpty()) varNames.add(type.getName() + ".*"); for (String varName : varNames) { RoboconfImportedVariable var = RoboconfEmfFactory.eINSTANCE.createRoboconfImportedVariable(); var.setName(varName); if (var.getName().startsWith(this.component.getName() + ".")) var.setOptional(true); this.nameToImportedVariables.put(varName, var); } } // Update the map that will act as our model. // We do this in two steps because... // 1. nameToImportedVariables is a tree map. Variables are sorted alphabetically. // 2. importedVariablesToTaken is our model for the UI. Since it is a linked hash map, // it preserves insertion order. So, we preserve the order from the tree map. // // And we cannot directly use a tree map with imported variables. // The class was generated by EMF and there is no natural ordering. for (RoboconfImportedVariable var : this.nameToImportedVariables.values()) { this.importedVariablesToTaken.put(var, Boolean.FALSE); } // Should they be marked as used? updateImportedVariablesStates(); // Display them in a table viewer final TableViewer viewer = new TableViewer(bigContainer, SWT.BORDER | SWT.SINGLE); viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); viewer.getTable().setHeaderVisible(true); viewer.getTable().setLinesVisible(true); TableLayout tlayout = new TableLayout(); tlayout.addColumnData(new ColumnWeightData(12, 90, true)); tlayout.addColumnData(new ColumnWeightData(40, 200, true)); tlayout.addColumnData(new ColumnWeightData(12, 90, true)); viewer.getTable().setLayout(tlayout); String[] columnTitles = { "Import", "Variable Name", "Optional" }; for (int i = 0; i < columnTitles.length; i++) { int style = i == 1 ? SWT.LEFT : SWT.CENTER; TableColumn column = new TableColumn(viewer.getTable(), style); column.setText(columnTitles[i]); } viewer.setLabelProvider(new ImportedVariableLabelProvider(this.checked, this.unchecked)); viewer.setContentProvider(new ArrayContentProvider()); viewer.setInput(this.importedVariablesToTaken.entrySet()); viewer.getTable().addListener(SWT.MouseDoubleClick, new Listener() { @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public void handleEvent(Event event) { Point p = new Point(event.x, event.y); ViewerCell cell = viewer.getCell(p); Map.Entry<RoboconfImportedVariable, Boolean> entry = (Map.Entry) cell.getElement(); RoboconfImportedVariable var = entry.getKey(); if (cell.getColumnIndex() == 0) { entry.setValue(!entry.getValue()); } else if (cell.getColumnIndex() == 2) { var.setOptional(!var.isOptional()); } viewer.refresh(entry); } }); return bigContainer; }
From source file:net.sf.logsaw.ui.editors.LogViewEditor.java
License:Open Source License
@Override public ALogEntryField<?, ?> getFocusCellLogEntryField() { ViewerCell cell = focusCellManager.getFocusCell(); if ((cell != null) && (cell.getColumnIndex() > 0)) { return columnConfig.getFields().get(cell.getColumnIndex() - 1); }/*from w w w . ja v a2s . c o m*/ return null; }
From source file:net.sf.logsaw.ui.editors.LogViewEditor.java
License:Open Source License
@Override public LogEntry getSelectedLogEntry() { ViewerCell cell = focusCellManager.getFocusCell(); if ((cell != null) && (cell.getColumnIndex() > 0)) { return (LogEntry) cell.getElement(); }/*from www.j a v a 2 s . c o m*/ return null; }
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 av 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()); // 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 }); }