List of usage examples for org.eclipse.jface.viewers TreeViewerColumn TreeViewerColumn
public TreeViewerColumn(TreeViewer viewer, TreeColumn column)
From source file:org.eclipse.birt.report.designer.internal.ui.views.attributes.widget.AdvancePropertyDescriptor.java
License:Open Source License
public Control createControl(Composite parent) { container = new Composite(parent, SWT.NONE); GridLayout layout = UIUtil.createGridLayoutWithoutMargin(1, false); layout.marginTop = 2;/*ww w . j ava 2 s. co m*/ layout.marginWidth = layout.marginBottom = 1; container.setLayout(layout); container.setLayoutData(new GridData(GridData.FILL_BOTH)); initSortingType(); viewer = new CustomTreeViewer(container, SWT.FULL_SELECTION); tableTree = viewer.getTree(); GridData gd = new GridData(GridData.FILL_BOTH); tableTree.setLayoutData(gd); tableTree.setHeaderVisible(true); tableTree.setLinesVisible(true); viewer.setContentProvider(provider.getContentProvier()); TreeViewerColumn tvc1 = new TreeViewerColumn(viewer, SWT.NONE); tvc1.getColumn().setText(COLUMN_TITLE_PROPERTY); tvc1.getColumn().setWidth(300); tvc1.setLabelProvider(new DelegatingStyledCellLabelProvider(provider.getNameLabelProvier())); TreeViewerColumn tvc2 = new TreeViewerColumn(viewer, SWT.NONE); tvc2.getColumn().setText(COLUMN_TITLE_VALUE); tvc2.getColumn().setWidth(400); tvc2.setLabelProvider(new DelegatingStyledCellLabelProvider(provider.getValueLabelProvier())); AlphabeticallyViewSorter sorter = new AlphabeticallyViewSorter(); sorter.setAscending(true); viewer.setSorter(sorter); hookControl(); // create a new table tree editor tableTreeEditor = new TreeEditor(tableTree); // create the editor listener createEditorListener(); MementoBuilder builder = new MementoBuilder(); if ((propertySheetMemento = builder.getRootMemento().getChild(IPageLayout.ID_PROP_SHEET)) == null) { propertySheetMemento = builder.getRootMemento().createChild(IPageLayout.ID_PROP_SHEET, MementoElement.Type_View); } if ((viewerMemento = propertySheetMemento.getChild(propertyViewerID)) == null) { viewerMemento = propertySheetMemento.createChild(propertyViewerID, MementoElement.Type_Viewer); } return container; }
From source file:org.eclipse.birt.report.designer.internal.ui.views.property.ReportPropertySheetPage.java
License:Open Source License
public void createControl(Composite parent) { container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.marginWidth = layout.marginHeight = 0; container.setLayout(layout);/* www. jav a 2s .c o m*/ title = new TabbedPropertyTitle(container, FormWidgetFactory.getInstance()); title.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); title.setActions( new Action[] { new GroupSortingAction(), new AlphabeticSortingAction(), new LocalModelAction() }); Composite viewerContainer = new Composite(container, SWT.NONE); layout = new GridLayout(); layout.marginWidth = 10; layout.marginHeight = 3; viewerContainer.setLayout(layout); viewerContainer.setLayoutData(new GridData(GridData.FILL_BOTH)); viewer = new CustomTreeViewer(viewerContainer, SWT.FULL_SELECTION); tableTree = viewer.getTree(); tableTree.setLayoutData(new GridData(GridData.FILL_BOTH)); tableTree.setHeaderVisible(true); tableTree.setLinesVisible(true); viewer.setContentProvider(provider); TreeViewerColumn tvc1 = new TreeViewerColumn(viewer, SWT.NONE); tvc1.getColumn().setText(COLUMN_TITLE_PROPERTY); tvc1.getColumn().setWidth(300); tvc1.setLabelProvider(new DelegatingStyledCellLabelProvider(new ReportPropertySheetNameLabelProvider())); TreeViewerColumn tvc2 = new TreeViewerColumn(viewer, SWT.NONE); tvc2.getColumn().setText(COLUMN_TITLE_VALUE); tvc2.getColumn().setWidth(400); tvc2.setLabelProvider(new DelegatingStyledCellLabelProvider(new ReportPropertySheetValueLabelProvider())); AlphabeticallyViewSorter sorter = new AlphabeticallyViewSorter(); sorter.setAscending(true); viewer.setSorter(sorter); hookControl(); // create a new table tree editor tableTreeEditor = new TreeEditor(tableTree); // create the editor listener createEditorListener(); handleGlobalAction(); // suport the mediator SessionHandleAdapter.getInstance().getMediator(moduleHandle).addColleague(this); FormWidgetFactory.getInstance().paintFormStyle(parent); FormWidgetFactory.getInstance().adapt(parent); IWorkbenchPage page = getSite().getPage(); MementoBuilder builder = new MementoBuilder(); if ((propertySheetMemento = builder.getRootMemento().getChild(IPageLayout.ID_PROP_SHEET)) == null) { propertySheetMemento = builder.getRootMemento().createChild(IPageLayout.ID_PROP_SHEET, MementoElement.Type_View); } if ((viewerMemento = propertySheetMemento.getChild(propertyViewerID)) == null) { viewerMemento = propertySheetMemento.createChild(propertyViewerID, MementoElement.Type_Viewer); } page.addSelectionListener(this); // handleSelectionChanged( page.getSelection( ) ); }
From source file:org.eclipse.buildship.ui.view.execution.ExecutionPage.java
License:Open Source License
@Override public FilteredTree createPageWithResult(Composite parent) { // configure tree FilteredTree filteredTree = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL, new PatternFilter(true)); filteredTree.setShowFilterControls(false); filteredTree.getViewer().getTree().setHeaderVisible(this.state.isShowTreeHeader()); this.nameColumn = new TreeViewerColumn(filteredTree.getViewer(), SWT.NONE); this.nameColumn.getColumn().setText(ExecutionViewMessages.Tree_Column_Operation_Name_Text); this.nameColumn.getColumn().setWidth(this.state.getHeaderNameColumnWidth()); this.durationColumn = new TreeViewerColumn(filteredTree.getViewer(), SWT.RIGHT); this.durationColumn.getColumn().setText(ExecutionViewMessages.Tree_Column_Operation_Duration_Text); this.durationColumn.getColumn().setWidth(this.state.getHeaderDurationColumnWidth()); // configure data binding IListProperty childrenProperty = new OperationItemChildrenListProperty(); ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider( childrenProperty.listFactory(), null); filteredTree.getViewer().setContentProvider(contentProvider); IObservableSet knownElements = contentProvider.getKnownElements(); attachLabelProvider(OperationItem.FIELD_NAME, OperationItem.FIELD_IMAGE, knownElements, this.nameColumn); attachLabelProvider(OperationItem.FIELD_DURATION, null, knownElements, this.durationColumn); // keep header size synchronized between pages this.nameColumn.getColumn().addControlListener(new ControlAdapter() { @Override/* w w w . java2 s . co m*/ public void controlResized(ControlEvent e) { int newWidth = ExecutionPage.this.nameColumn.getColumn().getWidth(); ExecutionPage.this.state.setHeaderNameColumnWidth(newWidth); ExecutionsView view = (ExecutionsView) getSite().getViewSite().getPart(); for (ExecutionPage page : FluentIterable.from(view.getPages()).filter(ExecutionPage.class)) { if (page != ExecutionPage.this) { page.nameColumn.getColumn().setWidth(newWidth); } } } }); this.durationColumn.getColumn().addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { int newWidth = ExecutionPage.this.durationColumn.getColumn().getWidth(); ExecutionPage.this.state.setHeaderDurationColumnWidth(newWidth); ExecutionsView view = (ExecutionsView) getSite().getViewSite().getPart(); for (ExecutionPage page : FluentIterable.from(view.getPages()).filter(ExecutionPage.class)) { if (page != ExecutionPage.this) { page.durationColumn.getColumn().setWidth(newWidth); } } } }); // manage the selection history this.selectionHistoryManager = new SelectionHistoryManager(filteredTree.getViewer()); // set tree root node OperationItem root = new OperationItem(); filteredTree.getViewer().setInput(root); // listen to progress events this.request.addTypedProgressListeners(new ExecutionProgressListener(this, root)); // return the tree as the outermost page control return filteredTree; }
From source file:org.eclipse.buildship.ui.view.task.TaskView.java
License:Open Source License
@Override public void createPartControl(Composite parent) { // the top-level control changing its content depending on whether the content provider // contains task data to display or not this.pages = new PageBook(parent, SWT.NONE); // if there is no task data to display, show only a label this.emptyInputPage = new Label(this.pages, SWT.NONE); this.emptyInputPage.setText(TaskViewMessages.Label_No_Gradle_Projects); // if there is a problem loading the task data, show an error label this.errorInputPage = new Label(this.pages, SWT.NONE); this.errorInputPage.setText(TaskViewMessages.Label_Reload_Error); this.errorInputPage.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_RED)); // if there is task data to display, show the task tree and the search label on the bottom this.nonEmptyInputPage = new Composite(this.pages, SWT.NONE); GridLayout gridLayout = new GridLayout(1, false); gridLayout.marginWidth = gridLayout.marginHeight = gridLayout.verticalSpacing = 0; this.nonEmptyInputPage.setLayout(gridLayout); // add tree with two columns this.filteredTree = new FilteredTree(this.nonEmptyInputPage, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI, new PatternFilter(true)); this.filteredTree.setShowFilterControls(false); this.treeViewer = this.filteredTree.getViewer(); this.treeViewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH)); // set filter, comparator, and content provider this.treeViewer.addFilter(TaskNodeViewerFilter.createFor(getState())); this.treeViewer.setComparator(TaskNodeViewerSorter.createFor(this.state)); this.treeViewer.setContentProvider(new TaskViewContentProvider(this, CorePlugin.modelRepositoryProvider(), CorePlugin.processStreamsProvider(), CorePlugin.workspaceOperations())); // add columns to the tree and configure label providers ILabelDecorator labelDecorator = PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(); TreeViewerColumn treeViewerNameColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT); treeViewerNameColumn.setLabelProvider( new TaskDecoratingStyledCellLabelProvider(new TaskNameLabelProvider(), labelDecorator, null)); final TreeColumn taskNameColumn = treeViewerNameColumn.getColumn(); taskNameColumn.setText(TaskViewMessages.Tree_Column_Name_Text); taskNameColumn.setWidth(this.state.getHeaderNameColumnWidth()); TreeViewerColumn treeViewerDescriptionColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT); treeViewerDescriptionColumn.setLabelProvider(new TaskDescriptionLabelProvider()); final TreeColumn taskDescriptionColumn = treeViewerDescriptionColumn.getColumn(); taskDescriptionColumn.setText(TaskViewMessages.Tree_Column_Description_Text); taskDescriptionColumn.setWidth(this.state.getHeaderDescriptionColumnWidth()); // when changed save the header width into the state taskNameColumn.addControlListener(new ControlAdapter() { @Override/* w w w .j a v a2 s . c o m*/ public void controlResized(ControlEvent e) { TaskView.this.state.setHeaderNameColumnWidth(taskNameColumn.getWidth()); } }); taskDescriptionColumn.addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { TaskView.this.state.setHeaderDescriptionColumnWidth(taskDescriptionColumn.getWidth()); } }); // manage the selection history as required for the task execution and let the // SelectionHistoryManager propagate the NodeSelection to the Workbench this.selectionHistoryManager = new SelectionHistoryManager(this.treeViewer); getSite().setSelectionProvider(this.selectionHistoryManager); // create toolbar actions, menu items, event listeners, etc. this.uiContributionManager = new UiContributionManager(this); this.uiContributionManager.wire(); // set initial content (use fetch strategy LOAD_IF_NOT_CACHED since // the model might already be available in case a project import has // just happened) reload(FetchStrategy.LOAD_IF_NOT_CACHED); }
From source file:org.eclipse.cdt.codan.internal.ui.preferences.ProblemsTreeEditor.java
License:Open Source License
public ProblemsTreeEditor(Composite parent, IProblemProfile profile) { super(PreferenceConstants.P_PROBLEMS, CodanUIMessages.ProblemsTreeEditor_Problems, parent); setEmptySelectionAllowed(true);// w w w .j a v a 2s . c o m getTreeViewer().getTree().setHeaderVisible(true); // getTreeViewer().getTree(). getTreeViewer().setContentProvider(new ProblemsContentProvider()); getTreeViewer().setCheckStateProvider(new ProblemsCheckStateProvider()); //getTreeViewer().getTree(). ColumnViewerToolTipSupport.enableFor(getTreeViewer(), ToolTip.RECREATE); // column Name TreeViewerColumn column1 = new TreeViewerColumn(getTreeViewer(), SWT.NONE); column1.getColumn().setWidth(300); column1.getColumn().setText(CodanUIMessages.ProblemsTreeEditor_NameColumn); column1.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof IProblem) { IProblem p = (IProblem) element; return p.getName(); } if (element instanceof IProblemCategory) { IProblemCategory p = (IProblemCategory) element; return p.getName(); } return null; } @Override public boolean useNativeToolTip(Object object) { return true; } @Override public String getToolTipText(Object element) { if (element instanceof IProblem) { IProblem p = (IProblem) element; String sampleMessage = getSampleMessage(p); int wrapLen = sampleMessage.length(); if (wrapLen < 60) wrapLen = 60; if (wrapLen > 100) wrapLen = 100; String toolTip = ""; //$NON-NLS-1$ String description = p.getDescription(); if (description != null) { toolTip = wrapText(description, wrapLen); toolTip += "\n\n"; //$NON-NLS-1$ } toolTip += CodanUIMessages.ProblemsTreeEditor_ToolTip; toolTip += "\n "; //$NON-NLS-1$ toolTip += wrapText(sampleMessage, wrapLen); return toolTip; } return super.getToolTipText(element); } private String wrapText(String description, int i) { String result = ""; //$NON-NLS-1$ while (description.length() > i) { int k = description.lastIndexOf(' ', i); if (k < 0) k = i; result += description.substring(0, k); result += '\n'; description = description.substring(k); } return result + description; } }); // column Severity TreeViewerColumn column2 = new TreeViewerColumn(getTreeViewer(), SWT.NONE); column2.getColumn().setWidth(100); column2.getColumn().setText(CodanUIMessages.ProblemsTreeEditor_SeverityColumn); column2.setLabelProvider(new ColumnLabelProvider() { @Override public Image getImage(Object element) { if (element instanceof IProblem) { IProblem p = (IProblem) element; switch (p.getSeverity().intValue()) { case IMarker.SEVERITY_INFO: return CodanUIActivator.getDefault().getImage(ImageConstants.ICON_INFO); case IMarker.SEVERITY_WARNING: return CodanUIActivator.getDefault().getImage(ImageConstants.ICON_WARNING); case IMarker.SEVERITY_ERROR: return CodanUIActivator.getDefault().getImage(ImageConstants.ICON_ERROR); } } return null; } @Override public String getText(Object element) { if (element instanceof IProblem) { IProblem p = (IProblem) element; return p.getSeverity().toTranslatableString(); } return null; } }); column2.setEditingSupport(new EditingSupport(getTreeViewer()) { @Override protected boolean canEdit(Object element) { return element instanceof IProblem; } @Override protected CellEditor getCellEditor(Object element) { return new ComboBoxCellEditor(getTreeViewer().getTree(), CodanSeverity.stringValues()); } @Override protected Object getValue(Object element) { return ((IProblem) element).getSeverity().intValue(); } @Override protected void setValue(Object element, Object value) { int index = ((Integer) value).intValue(); CodanSeverity val = CodanSeverity.values()[index]; ((IProblemWorkingCopy) element).setSeverity(val); getTreeViewer().update(element, null); } }); getTreeViewer().setAutoExpandLevel(2); codanPreferencesLoader.setInput(profile); getViewer().setInput(profile); }
From source file:org.eclipse.cdt.embsysregview.views.EmbSysRegView.java
License:Open Source License
/** * This is a callback that creates the viewer and initialize it. *//*from w ww.j a v a 2 s . co m*/ public void createPartControl(final Composite parent) { Bundle bundle = Platform.getBundle("org.eclipse.cdt.embsysregview"); URL fileURL = bundle.getEntry("icons/selected_register.png"); URL fileURL2 = bundle.getEntry("icons/unselected_register.png"); URL fileURL3 = bundle.getEntry("icons/selected_field.png"); URL fileURL4 = bundle.getEntry("icons/unselected_field.png"); URL fileURL5 = bundle.getEntry("icons/info.png"); URL fileURL6 = bundle.getEntry("icons/interpretation.png"); URL fileURL7 = bundle.getEntry("icons/config.png"); try { selectedImage = new Image(parent.getDisplay(), fileURL.openStream()); unselectedImage = new Image(parent.getDisplay(), fileURL2.openStream()); selectedFieldImage = new Image(parent.getDisplay(), fileURL3.openStream()); unselectedFieldImage = new Image(parent.getDisplay(), fileURL4.openStream()); infoImage = new Image(parent.getDisplay(), fileURL5.openStream()); interpretationImage = new Image(parent.getDisplay(), fileURL6.openStream()); configButtonImage = new Image(parent.getDisplay(), fileURL7.openStream()); } catch (Exception e) { selectedImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEC_FIELD_ERROR); unselectedImage = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_DEC_FIELD_ERROR); selectedFieldImage = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_DEC_FIELD_ERROR); unselectedFieldImage = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_DEC_FIELD_ERROR); infoImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_DEC_FIELD_ERROR); interpretationImage = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_DEC_FIELD_ERROR); configButtonImage = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_DEC_FIELD_ERROR); } TreeViewerColumn column; parent.setLayout(new MigLayout("fill", "", "")); header = new Composite(parent, SWT.NONE); /*header.setLayout(new MigLayout("fill","",""));*/ header.setLayoutData("dock north,height 16px,width 100%,wmin 0,hmin 16,gap 0 0 -5 0"); RowLayout rowLayout = new RowLayout(SWT.HORIZONTAL); rowLayout.marginLeft = -1; rowLayout.marginRight = 0; rowLayout.marginTop = -1; rowLayout.marginBottom = 0; rowLayout.fill = true; rowLayout.wrap = false; rowLayout.spacing = 5; header.setLayout(rowLayout); configButton = new Button(header, SWT.FLAT); configButton.setImage(configButtonImage); configButton.setSize(17, 17); RowData data = new RowData(); data.width = 17; data.height = 17; configButton.setLayoutData(data); configButton.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { if (e.type == SWT.Selection) { IPreferencePage page = new PreferencePageEmbSys(); page.setTitle("EmbSysRegView"); IPreferencePage page2 = new PreferencePageEmbSysBehavior(); page2.setTitle("Behavior"); PreferenceManager mgr = new PreferenceManager(); IPreferenceNode node = new PreferenceNode("1", page); node.add(new PreferenceNode("2", page2)); mgr.addToRoot(node); PreferenceDialog dialog = new PreferenceDialog( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), mgr); dialog.create(); dialog.setMessage(page.getTitle()); dialog.open(); } } }); collapseButton = new Button(header, SWT.FLAT); collapseButton.setLayoutData(new RowData(17, 17)); collapseButton .setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_ELCL_COLLAPSEALL)); collapseButton.setToolTipText("Collapse all open tree nodes"); collapseButton.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { if (e.type == SWT.Selection) { viewer.collapseAll(); } } }); activateAllButton = new Button(header, SWT.FLAT); activateAllButton.setLayoutData(new RowData(17, 17)); activateAllButton.setText("*"); // Not very clear, should/could be some custom graphics featuring the color green, perhaps? activateAllButton.setToolTipText( "Activate all registers (or none, if Control is pressed); press Shift to only affect visible registers"); activateAllButton.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { if (e.type == SWT.Selection) { activateAll((e.stateMask & SWT.CONTROL) == 0, (e.stateMask & SWT.SHIFT) != 0); } } }); copyButton = new Button(header, SWT.FLAT); copyButton.setLayoutData(new RowData(17, 17)); copyButton.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_COPY)); copyButton.setToolTipText("Copy active (green) register values to clipboard"); copyButton.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { if (e.type == SWT.Selection) { final StringBuilder sb = new StringBuilder(); copyRegisters(sb); if (sb.length() > 0) { final Clipboard cb = new Clipboard(Display.getCurrent()); final TextTransfer tt = TextTransfer.getInstance(); cb.setContents(new Object[] { sb.toString() }, new Transfer[] { tt }); } } } }); infoLabel = new Label(header, SWT.NONE); viewer = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); viewer.getControl().setLayoutData("height 100%,width 100%,hmin 0,wmin 0"); viewer.getTree().setLinesVisible(true); viewer.getTree().setHeaderVisible(true); // Registername column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setWidth(250); column.getColumn().setMoveable(false); column.getColumn().setText("Register"); column.setLabelProvider(new ColumnLabelProvider() { @Override public Color getForeground(Object element) { if (element instanceof TreeRegister) if (((TreeRegister) element).isRetrievalActive()) return parent.getShell().getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN); if (element instanceof TreeField) if (((TreeRegister) ((TreeField) element).getParent()).isRetrievalActive()) return parent.getShell().getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN); return null; } public String getText(Object element) { if (element instanceof TreeField) { final int bitOffset = ((TreeField) element).getBitOffset(); final int bitLength = ((TreeField) element).getBitLength(); if (bitLength == 1) return element.toString() + " (bit " + String.valueOf(bitOffset) + ")"; else return element.toString() + " (bits " + String.valueOf(bitOffset + bitLength - 1) + "-" + String.valueOf(bitOffset) + ")"; } else return element.toString(); } public Image getImage(Object obj) { if (obj instanceof TreeParent) { if (obj instanceof TreeRegister) if (((TreeRegister) obj).isRetrievalActive()) return selectedImage; else return unselectedImage; } if (obj instanceof TreeField) { if (((TreeRegister) ((TreeField) obj).getParent()).isRetrievalActive()) return selectedFieldImage; else return unselectedFieldImage; } return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER); } }); // Hex Value column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setWidth(80); column.getColumn().setMoveable(false); column.getColumn().setText("Hex"); column.setLabelProvider(new ColumnLabelProvider() { @Override public Color getForeground(Object element) { if (element instanceof TreeRegister) if (!((TreeRegister) element).isWriteOnly()) if (((TreeRegister) element).hasValueChanged()) return parent.getShell().getDisplay().getSystemColor(SWT.COLOR_RED); if (element instanceof TreeField) if (!((TreeRegister) ((TreeField) element).getParent()).isWriteOnly()) if (((TreeField) element).hasValueChanged()) return parent.getShell().getDisplay().getSystemColor(SWT.COLOR_RED); return null; } public String getText(Object element) { if (element instanceof TreeGroup) return ""; if (element instanceof TreeRegisterGroup) return ""; if (element instanceof TreeRegister) if (((TreeRegister) element).getValue() == -1) return ""; else if (((TreeRegister) element).isWriteOnly()) return "- write only -"; else return Utils.longtoHexString(((TreeRegister) element).getValue(), ((TreeRegister) element).getBitSize()); if (element instanceof TreeField) if (((TreeRegister) ((TreeField) element).getParent()).getValue() == -1) return ""; else if (((TreeRegister) ((TreeField) element).getParent()).isWriteOnly()) return "- write only -"; else return Utils.longtoHexString(((TreeField) element).getValue(), ((TreeField) element).getBitLength()); else return element.toString(); } }); final TextCellEditor textCellEditor = new TextCellEditor(viewer.getTree()); textCellEditor.setValidator(new HexCellEditorValidator(viewer)); final ComboBoxCellEditor comboBoxCellEditor = new ComboBoxCellEditor(viewer.getTree(), new String[0], SWT.NONE); comboBoxCellEditor.setValidator(new HexCellEditorValidator(viewer)); ((CCombo) comboBoxCellEditor.getControl()).addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { int selectionIndex = ((CCombo) comboBoxCellEditor.getControl()).getSelectionIndex(); TreeElement obj = currentEditedElement; if (obj instanceof TreeField) { long value = -1; if (selectionIndex != -1) { value = ((TreeField) obj).getInterpretations() .getValue(((CCombo) comboBoxCellEditor.getControl()).getItem(selectionIndex)); } else { String svalue = ((CCombo) comboBoxCellEditor.getControl()).getText(); if (svalue.startsWith("0x")) value = Long.valueOf(svalue.substring(2, svalue.length()), 16); } if (value != -1) ((TreeField) obj).setValue(value); } if (((TreeRegister) obj.getParent()).isWriteOnly()) updateTreeFields(invisibleRoot); viewer.refresh(); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); comboBoxCellEditor.addListener(new ICellEditorListener() { @Override public void applyEditorValue() { int selectionIndex = ((CCombo) comboBoxCellEditor.getControl()).getSelectionIndex(); TreeElement obj = currentEditedElement; if (obj instanceof TreeField) { long value = -1; if (selectionIndex != -1) { value = ((TreeField) obj).getInterpretations() .getValue(((CCombo) comboBoxCellEditor.getControl()).getItem(selectionIndex)); } else { String svalue = ((CCombo) comboBoxCellEditor.getControl()).getText(); if (svalue.startsWith("0x")) value = Long.valueOf(svalue.substring(2, svalue.length()), 16); } if (value != -1) ((TreeField) obj).setValue(value); } if (((TreeRegister) obj.getParent()).isWriteOnly()) updateTreeFields(invisibleRoot); viewer.refresh(); } @Override public void cancelEditor() { } @Override public void editorValueChanged(boolean oldValidState, boolean newValidState) { } }); column.setEditingSupport(new EditingSupport(viewer) { @Override protected boolean canEdit(Object element) { if (element instanceof TreeField && ((((TreeRegister) ((TreeField) element).getParent()).isReadWrite()) || (((TreeRegister) ((TreeField) element).getParent()).isWriteOnly()))) return true; if (element instanceof TreeRegister && (((TreeRegister) element).isReadWrite() || ((TreeRegister) element).isWriteOnly())) return true; return false; } @Override protected CellEditor getCellEditor(Object element) { if (element instanceof TreeField && ((TreeField) element).hasInterpretations()) { comboBoxCellEditor.setItems(((TreeField) element).getInterpretations().getInterpretations()); IPreferenceStore store = Activator.getDefault().getPreferenceStore(); int store_combolength = store.getInt("combolength"); if (store_combolength > 0) ((CCombo) comboBoxCellEditor.getControl()).setVisibleItemCount(store_combolength); currentEditedElement = (TreeElement) element; return comboBoxCellEditor; } else return textCellEditor; } @Override protected Object getValue(Object element) { if (element instanceof TreeField && ((TreeField) element).hasInterpretations()) { // TODO: check if the Integer is for index in the combobox return new Integer((int) ((TreeField) element).getValue()); // TODO: what to do on large bitfield ? } else { if (element instanceof TreeField && ((TreeField) element).getValue() != -1) return Utils.longtoHexString(((TreeField) element).getValue(), ((TreeField) element).getBitLength()); if (element instanceof TreeRegister && ((TreeRegister) element).getValue() != -1) return Utils.longtoHexString(((TreeRegister) element).getValue(), ((TreeRegister) element).getBitSize()); } return null; } @Override protected void setValue(Object element, Object value) { if (value == null) return; if (value instanceof String) { if (element instanceof TreeRegister && ((String) value).startsWith("0x")) { String svalue = ((String) value); long lvalue = Long.valueOf(svalue.substring(2, svalue.length()), 16); TreeRegister treeRegister = ((TreeRegister) element); if (treeRegister.getValue() != -1 && treeRegister.getValue() != lvalue) { // Update Value on device treeRegister.setAndWriteValue(lvalue); if (((TreeRegister) element).isWriteOnly()) updateTreeFields(invisibleRoot); viewer.refresh(); } } if (element instanceof TreeField && ((String) value).startsWith("0x")) { String svalue = ((String) value); long fvalue = Long.valueOf(svalue.substring(2, svalue.length()), 16); TreeField treeField = ((TreeField) element); if (treeField.getValue() != -1 && treeField.getValue() != fvalue) { TreeRegister treeRegister = ((TreeRegister) treeField.getParent()); // calculate register value + modified field to write into register long rvalue = treeRegister.getValue(); int bitLength = treeField.getBitLength(); int bitOffset = treeField.getBitOffset(); long mask; mask = (0xFFFFFFFFL >> (32 - bitLength)) << bitOffset; rvalue = rvalue & (~mask); // clear field bits in register value fvalue = fvalue << bitOffset; // shift field value into its position in the register fvalue = fvalue & mask; // just to be sure, cut everything but the field rvalue = rvalue | fvalue; // blend the field value into the register value // Update Value in Target treeRegister.setAndWriteValue(rvalue); if (((TreeRegister) (((TreeField) element).getParent())).isWriteOnly()) updateTreeFields(invisibleRoot); viewer.refresh(treeRegister); } } } //TODO: why...what for... //viewer.refresh(element); } }); // Binary Value column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setMoveable(false); column.getColumn().setText("Bin"); column.setLabelProvider(new ColumnLabelProvider() { @Override public Color getForeground(Object element) { if (element instanceof TreeRegister) if (!((TreeRegister) element).isWriteOnly()) if (((TreeRegister) element).hasValueChanged()) return parent.getShell().getDisplay().getSystemColor(SWT.COLOR_RED); if (element instanceof TreeField) if (!((TreeRegister) ((TreeField) element).getParent()).isWriteOnly()) if (((TreeField) element).hasValueChanged()) return parent.getShell().getDisplay().getSystemColor(SWT.COLOR_RED); return null; } public String getText(Object element) { if (element instanceof TreeGroup) return ""; if (element instanceof TreeRegisterGroup) return ""; if (element instanceof TreeRegister) if (((TreeRegister) element).getValue() == -1) return ""; else if (((TreeRegister) element).isWriteOnly()) return "------------- write only -------------"; else return Utils.longtobinarystring(((TreeRegister) element).getValue(), ((TreeRegister) element).getBitSize()); if (element instanceof TreeField) if (((TreeRegister) ((TreeField) element).getParent()).getValue() == -1) return ""; else if (((TreeRegister) ((TreeField) element).getParent()).isWriteOnly()) return "------------- write only -------------"; else return Utils.longtobinarystring(((TreeField) element).getValue(), ((TreeField) element).getBitLength()); else return element.toString(); } }); column.setEditingSupport(new EditingSupport(viewer) { @Override protected boolean canEdit(Object element) { if (element instanceof TreeField && ((((TreeRegister) ((TreeField) element).getParent()).isReadWrite()) || (((TreeRegister) ((TreeField) element).getParent()).isWriteOnly()))) return true; if (element instanceof TreeRegister && (((TreeRegister) element).isReadWrite() || ((TreeRegister) element).isWriteOnly())) return true; return false; } @Override protected CellEditor getCellEditor(Object element) { return new BinaryButtonsCellEditor(viewer.getTree(), viewer); } @Override protected Object getValue(Object element) { return element; } @Override protected void setValue(Object element, Object value) { viewer.refresh(element); } }); // Register Reset Value (hex) column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setWidth(80); column.getColumn().setMoveable(false); column.getColumn().setText("Reset"); column.setLabelProvider(new ColumnLabelProvider() { public String getText(Object element) { if (element instanceof TreeGroup) return ""; if (element instanceof TreeRegisterGroup) return ""; if (element instanceof TreeRegister) return Utils.longtoHexString(((TreeRegister) element).getResetValue(), ((TreeRegister) element).getBitSize()); if (element instanceof TreeField) return ""; else return ""; } }); // Register Access column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setAlignment(SWT.CENTER); column.getColumn().setWidth(50); column.getColumn().setMoveable(false); column.getColumn().setText("Access"); column.setLabelProvider(new ColumnLabelProvider() { public String getText(Object element) { if (element instanceof TreeGroup) return ""; if (element instanceof TreeRegisterGroup) return ""; if (element instanceof TreeRegister) return ((TreeRegister) element).getType().toUpperCase(); if (element instanceof TreeField) return ""; else return ""; } }); // Register Address (hex) column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setWidth(80); column.getColumn().setMoveable(false); column.getColumn().setText("Address"); column.setLabelProvider(new ColumnLabelProvider() { public String getText(Object element) { if (element instanceof TreeGroup) return ""; if (element instanceof TreeRegisterGroup) return ""; if (element instanceof TreeRegister) return Utils.longtoHexString(((TreeRegister) element).getRegisterAddress(), 32); //TODO: get address width from xml ... if (element instanceof TreeField) return ""; else return ""; } }); // Description column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setWidth(300); column.getColumn().setMoveable(false); column.getColumn().setText("Description"); ColumnViewerToolTipSupport.enableFor(viewer); column.setLabelProvider(new CellLabelProvider() { public String getToolTipText(Object element) { if (element instanceof TreeRegister) { // only display if more than one line is found if (org.eclipse.cdt.embsysregview.views.Utils .countTextLines(((TreeRegister) element).getDescription()) > 1) return ((TreeRegister) element).getDescription(); else return null; } if (element instanceof TreeField) { // display tooltip if more than one line is found, or an interpretation is shown instead of this one line if (org.eclipse.cdt.embsysregview.views.Utils .countTextLines(((TreeField) element).getDescription()) > 1 || ((TreeField) element).hasInterpretation()) return ((TreeField) element).getDescription(); else return null; } return null; } public Point getToolTipShift(Object object) { return new Point(5, 5); } public int getToolTipDisplayDelayTime(Object object) { return 200; } public int getToolTipTimeDisplayed(Object object) { return 0; } public void update(ViewerCell cell) { Object element = cell.getElement(); if (element instanceof TreeGroup) cell.setText(((TreeGroup) element).getDescription()); if (element instanceof TreeRegisterGroup) cell.setText(((TreeRegisterGroup) element).getDescription()); if (element instanceof TreeRegister) { cell.setText(org.eclipse.cdt.embsysregview.views.Utils .getFirstNotEmptyTextLine(((TreeRegister) element).getDescription()).trim()); } if (element instanceof TreeField) if (((TreeField) element).hasInterpretation()) { cell.setText(((TreeField) element).getInterpretation()); cell.setImage(interpretationImage); } else { // Display first line cell.setText(org.eclipse.cdt.embsysregview.views.Utils .getFirstNotEmptyTextLine(((TreeField) element).getDescription()).trim()); // Display Icon if there are more than one line if (org.eclipse.cdt.embsysregview.views.Utils .countTextLines(((TreeField) element).getDescription()) > 1) cell.setImage(infoImage); } } }); doubleClickAction = new Action() { public void run() { ISelection selection = viewer.getSelection(); Object obj = ((IStructuredSelection) selection).getFirstElement(); int selectedColumn = -1; Tree tree = viewer.getTree(); Point pt = tree.toControl(Display.getCurrent().getCursorLocation()); viewer.getTree().getColumnCount(); for (int i = 0; i < tree.getColumnCount(); i++) { TreeItem item = tree.getItem(pt); if (item != null) { if (item.getBounds(i).contains(pt)) { selectedColumn = i; } } } if (obj instanceof TreeRegisterGroup && selectedColumn == 0) { TreeRegisterGroup treeRegisterGroup = ((TreeRegisterGroup) obj); TreeElement[] treeElements = treeRegisterGroup.getChildren(); for (TreeElement treeElement : treeElements) { TreeRegister treeRegister = ((TreeRegister) treeElement); if (!treeRegister.isWriteOnly()) { treeRegister.toggleRetrieval(); treeRegister.readValue(); } } viewer.refresh(obj); } if (obj instanceof TreeRegister && selectedColumn == 0) { TreeRegister treeRegister = ((TreeRegister) obj); if (!treeRegister.isWriteOnly()) { treeRegister.toggleRetrieval(); treeRegister.readValue(); viewer.refresh(obj); } } if (obj instanceof TreeField && selectedColumn == 0) { TreeField treeField = ((TreeField) obj); TreeRegister treeRegister = ((TreeRegister) treeField.getParent()); if (!treeRegister.isWriteOnly()) { treeRegister.toggleRetrieval(); treeRegister.readValue(); viewer.refresh(treeField.getParent()); } } } }; viewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { doubleClickAction.run(); } }); viewer.setContentProvider(new ViewContentProvider()); updateInfoLabel(); viewer.setInput(invisibleRoot); }
From source file:org.eclipse.dawnsci.hdf5.editor.H5Editor.java
License:Open Source License
@Override public void createPartControl(final Composite parent) { parent.setLayout(new GridLayout(1, false)); // TODO Searching not possible as tree is VIRTUAL and ILazy // final Text searchText = new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.SEARCH | SWT.ICON_CANCEL); // searchText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); // searchText.setToolTipText("Search on data set name or expression value." ); tree = new TreeViewer(parent, SWT.BORDER | SWT.VIRTUAL); tree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); tree.getTree().setHeaderVisible(true); tree.setUseHashlookup(true);/*from w w w. j a v a 2s . c o m*/ final String[] titles = { "Name", "Class", "Dims", "Description", "Size" }; final int[] widths = { 250, 120, 80, 150, 150 }; TreeViewerColumn tVCol; for (int i = 0; i < titles.length; i++) { tVCol = new TreeViewerColumn(tree, SWT.NONE); TreeColumn tCol = tVCol.getColumn(); tCol.setText(titles[i]); tCol.setWidth(widths[i]); tCol.setMoveable(true); } final H5SelectionProvider provider = new H5SelectionProvider(); getSite().setSelectionProvider(provider); /** * Allows double click to fire special tree events for DLS plotting */ createTreeListeners(provider); // final H5Filter filter = new H5Filter(); // searchText.addModifyListener(new ModifyListener() { // @Override // public void modifyText(ModifyEvent e) { // if (parent.isDisposed()) return; // filter.setSearchText(searchText.getText()); // refresh(); // } // }); }
From source file:org.eclipse.e4.internal.tools.context.spy.ContextDataPart.java
License:Open Source License
/** * Create contents of the view part.//from w ww. j a va 2s .c om */ @PostConstruct public void createControls(Composite parent, IEclipseContext ctx) { parent.setLayout(new GridLayout(1, false)); // TreeViewer on the top contextDataViewer = new TreeViewer(parent); dataProvider = ContextInjectionFactory.make(ContextDataProvider.class, ctx); contextDataViewer.setContentProvider(dataProvider); contextDataViewer.setLabelProvider(dataProvider); // contextContentTv.setSorter(new ViewerSorter()); final Tree cTree = contextDataViewer.getTree(); cTree.setHeaderVisible(true); cTree.setLinesVisible(true); cTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); // tv.setInput(a); contextDataViewer.setInput("Foo"); // getElements starts alone // Add columns in the tree // Create the first column for the key TreeViewerColumn keyCol = new TreeViewerColumn(contextDataViewer, SWT.NONE); keyCol.getColumn().setWidth(400); keyCol.getColumn().setText("Key"); ContextDataProvider keyLabelProvider = ContextInjectionFactory.make(ContextDataProvider.class, ctx); keyLabelProvider.setDisplayKey(true); keyCol.setLabelProvider(keyLabelProvider); keyCol.getColumn().setToolTipText("Key in context"); keyCol.getColumn().addSelectionListener( getHeaderSelectionAdapter(contextDataViewer, keyCol.getColumn(), 0, keyLabelProvider)); comparator = new ContextEntryComparator(0, keyLabelProvider); contextDataViewer.setComparator(comparator); // Create the second column for the value TreeViewerColumn valueCol = new TreeViewerColumn(contextDataViewer, SWT.NONE); valueCol.getColumn().setWidth(600); valueCol.getColumn().setText("Value"); ContextDataProvider valueLabelProvider = ContextInjectionFactory.make(ContextDataProvider.class, ctx); valueCol.setLabelProvider(dataProvider); valueCol.getColumn().addSelectionListener( getHeaderSelectionAdapter(contextDataViewer, valueCol.getColumn(), 1, valueLabelProvider)); // Open all the tree contextDataViewer.expandAll(); ColumnViewerToolTipSupport.enableFor(contextDataViewer); }
From source file:org.eclipse.e4.tools.css.spy.CssSpyDialog.java
License:Open Source License
/** * Create contents of the dialog./*from w w w . java2s.c o m*/ * * @param parent */ @Override protected Control createDialogArea(Composite parent) { Composite outer = (Composite) super.createDialogArea(parent); Composite top = new Composite(outer, SWT.NONE); GridLayoutFactory.swtDefaults().numColumns(2).applyTo(top); cssSearchBox = new Text(top, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH | SWT.ICON_CANCEL); cssSearchBox.setMessage("CSS Selector"); cssSearchBox.setToolTipText("Highlight matching widgets"); GridDataFactory.fillDefaults().grab(true, false).applyTo(cssSearchBox); showAllShells = new Button(top, SWT.CHECK); showAllShells.setText("All shells"); GridDataFactory.swtDefaults().applyTo(showAllShells); GridDataFactory.fillDefaults().applyTo(top); SashForm sashForm = new SashForm(outer, SWT.VERTICAL); sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); // / THE WIDGET TREE Composite widgetsComposite = new Composite(sashForm, SWT.NONE); widgetTreeViewer = new TreeViewer(widgetsComposite, SWT.BORDER | SWT.MULTI); widgetTreeProvider = new WidgetTreeProvider(); widgetTreeViewer.setContentProvider(widgetTreeProvider); widgetTreeViewer.setAutoExpandLevel(0); widgetTreeViewer.getTree().setLinesVisible(true); widgetTreeViewer.getTree().setHeaderVisible(true); ColumnViewerToolTipSupport.enableFor(widgetTreeViewer); TreeViewerColumn widgetTypeColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE); widgetTypeColumn.getColumn().setWidth(100); widgetTypeColumn.getColumn().setText("Widget"); widgetTypeColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object item) { CSSStylableElement element = CssSpyDialog.getCSSElement(item); return element.getLocalName() + " (" + element.getNamespaceURI() + ")"; } }); TreeViewerColumn widgetClassColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE); widgetClassColumn.getColumn().setText("CSS Class"); widgetClassColumn.getColumn().setWidth(100); widgetClassColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object item) { CSSStylableElement element = CssSpyDialog.getCSSElement(item); if (element.getCSSClass() == null) { return null; } String classes[] = element.getCSSClass().split(" +"); return classes.length <= 1 ? classes[0] : classes[0] + " (+" + (classes.length - 1) + " others)"; } @Override public String getToolTipText(Object item) { CSSStylableElement element = CssSpyDialog.getCSSElement(item); if (element == null) { return null; } StringBuilder sb = new StringBuilder(); sb.append(element.getLocalName()).append(" (").append(element.getNamespaceURI()).append(")"); if (element.getCSSClass() != null) { sb.append("\nClasses:\n "); Activator.join(sb, element.getCSSClass().split(" +"), "\n "); } return sb.toString(); } }); TreeViewerColumn widgetIdColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE); widgetIdColumn.getColumn().setWidth(100); widgetIdColumn.getColumn().setText("CSS Id"); widgetIdColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object item) { CSSStylableElement element = CssSpyDialog.getCSSElement(item); return element.getCSSId(); } }); TreeColumnLayout widgetsTableLayout = new TreeColumnLayout(); widgetsTableLayout.setColumnData(widgetTypeColumn.getColumn(), new ColumnWeightData(50)); widgetsTableLayout.setColumnData(widgetIdColumn.getColumn(), new ColumnWeightData(40)); widgetsTableLayout.setColumnData(widgetClassColumn.getColumn(), new ColumnWeightData(40)); widgetsComposite.setLayout(widgetsTableLayout); // / HEADERS Composite container = new Composite(sashForm, SWT.NONE); container.setLayout(new GridLayout(2, true)); Label lblCssProperties = new Label(container, SWT.NONE); lblCssProperties.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1)); lblCssProperties.setText("CSS Properties"); Label lblCssRules = new Label(container, SWT.NONE); lblCssRules.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1)); lblCssRules.setText("CSS Rules"); // // THE CSS PROPERTIES TABLE Composite propsComposite = new Composite(container, SWT.BORDER); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); gridData.minimumHeight = 50; propsComposite.setLayoutData(gridData); cssPropertiesViewer = new TableViewer(propsComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); cssPropertiesViewer.setContentProvider(new CSSPropertiesContentProvider()); cssPropertiesViewer.getTable().setLinesVisible(true); cssPropertiesViewer.getTable().setHeaderVisible(true); cssPropertiesViewer.setComparator(new ViewerComparator()); final TextCellEditor textCellEditor = new TextCellEditor(cssPropertiesViewer.getTable()); TableViewerEditor.create(cssPropertiesViewer, new TableViewerFocusCellManager(cssPropertiesViewer, new FocusCellOwnerDrawHighlighter(cssPropertiesViewer)), new ColumnViewerEditorActivationStrategy(cssPropertiesViewer), ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); TableViewerColumn propName = new TableViewerColumn(cssPropertiesViewer, SWT.NONE); propName.getColumn().setWidth(100); propName.getColumn().setText("Property"); propName.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return ((CSSPropertyProvider) element).getPropertyName(); } }); TableViewerColumn propValue = new TableViewerColumn(cssPropertiesViewer, SWT.NONE); propValue.getColumn().setWidth(100); propValue.getColumn().setText("Value"); propValue.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { try { return ((CSSPropertyProvider) element).getValue(); } catch (Exception e) { System.err.println("Error fetching property: " + element + ": " + e); return null; } } }); propValue.setEditingSupport(new EditingSupport(cssPropertiesViewer) { @Override protected CellEditor getCellEditor(Object element) { // do the fancy footwork here to return an appropriate editor to // the value-type return textCellEditor; } @Override protected boolean canEdit(Object element) { return true; } @Override protected Object getValue(Object element) { try { String value = ((CSSPropertyProvider) element).getValue(); return value == null ? "" : value; } catch (Exception e) { return ""; } } @Override protected void setValue(Object element, Object value) { try { if (value == null || ((String) value).trim().length() == 0) { return; } CSSPropertyProvider provider = (CSSPropertyProvider) element; provider.setValue((String) value); } catch (Exception e) { MessageDialog.openError(getShell(), "Error", "Unable to set property:\n\n" + e.getMessage()); } cssPropertiesViewer.update(element, null); } }); TableColumnLayout propsTableLayout = new TableColumnLayout(); propsTableLayout.setColumnData(propName.getColumn(), new ColumnWeightData(50)); propsTableLayout.setColumnData(propValue.getColumn(), new ColumnWeightData(50)); propsComposite.setLayout(propsTableLayout); // / THE CSS RULES cssRules = new Text(container, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI); cssRules.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); // / THE CSS PROPERTIES TABLE (again) showUnsetProperties = new Button(container, SWT.CHECK); showUnsetProperties.setText("Show unset properties"); showCssFragment = new Button(container, SWT.PUSH); showCssFragment.setText("Show CSS fragment"); showCssFragment.setToolTipText("Generates CSS rule block for the selected widget"); // and for balance new Label(container, SWT.NONE); // / The listeners cssSearchBox.addModifyListener(new ModifyListener() { private Runnable updater; private IProgressMonitor monitor; public void modifyText(ModifyEvent e) { if (monitor != null) { monitor.setCanceled(false); } display.timerExec(200, updater = new Runnable() { public void run() { if (updater == this) { performCSSSearch(monitor = new NullProgressMonitor()); } } }); } }); cssSearchBox.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.ARROW_DOWN && (e.stateMask & SWT.MODIFIER_MASK) == 0) { widgetTreeViewer.getControl().setFocus(); } } }); widgetTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { updateForWidgetSelection(event.getSelection()); showCssFragment.setEnabled(!event.getSelection().isEmpty()); } }); if (isLive()) { container.addMouseMoveListener(new MouseMoveListener() { public void mouseMove(MouseEvent e) { update(); } }); } if (shouldDismissOnLostFocus()) { container.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { setReturnCode(Window.OK); close(); } }); } container.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.character == SWT.ESC) { cancelPressed(); } else if (e.character == SWT.CR | e.character == SWT.LF) { okPressed(); } } }); showAllShells.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateWidgetTreeInput(); } }); outer.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { dispose(); } }); showUnsetProperties.setSelection(true); showUnsetProperties.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (showUnsetProperties.getSelection()) { cssPropertiesViewer.removeFilter(unsetPropertyFilter); } else { cssPropertiesViewer.addFilter(unsetPropertyFilter); } } }); showCssFragment.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { showCssFragment(); } @Override public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } }); update(); sashForm.setWeights(new int[] { 50, 50 }); widgetTreeViewer.getControl().setFocus(); return outer; }
From source file:org.eclipse.e4.tools.css.spy.CssSpyPart.java
License:Open Source License
/** * Create contents of the spy./* www . ja va2 s. co m*/ * * @param parent */ @PostConstruct protected Control createDialogArea(Composite parent, IEclipseContext ctx) { outer = parent; outer.setLayout(new GridLayout()); outer.setLayoutData(new GridData(GridData.FILL_BOTH)); Composite top = new Composite(outer, SWT.NONE); GridLayoutFactory.swtDefaults().numColumns(3).applyTo(top); cssSearchBox = new Text(top, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH | SWT.ICON_CANCEL); cssSearchBox.setMessage("CSS Selector"); cssSearchBox.setToolTipText("Highlight matching widgets"); GridDataFactory.fillDefaults().grab(true, false).applyTo(cssSearchBox); followSelection = new Button(top, SWT.CHECK); followSelection.setSelection(true); followSelection.setText("Follow UI Selection"); GridDataFactory.swtDefaults().applyTo(followSelection); showAllShells = new Button(top, SWT.CHECK); showAllShells.setText("All shells"); GridDataFactory.swtDefaults().applyTo(showAllShells); GridDataFactory.fillDefaults().applyTo(top); SashForm sashForm = new SashForm(outer, SWT.VERTICAL); sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); // / THE WIDGET TREE Composite widgetsComposite = new Composite(sashForm, SWT.NONE); widgetTreeViewer = new TreeViewer(widgetsComposite, SWT.BORDER | SWT.MULTI); widgetTreeProvider = new WidgetTreeProvider(); widgetTreeViewer.setContentProvider(widgetTreeProvider); widgetTreeViewer.setAutoExpandLevel(0); widgetTreeViewer.getTree().setLinesVisible(true); widgetTreeViewer.getTree().setHeaderVisible(true); ColumnViewerToolTipSupport.enableFor(widgetTreeViewer); TreeViewerColumn widgetTypeColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE); widgetTypeColumn.getColumn().setWidth(100); widgetTypeColumn.getColumn().setText("Widget"); widgetTypeColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object item) { CSSStylableElement element = CssSpyPart.getCSSElement(item); return element.getLocalName() + " (" + element.getNamespaceURI() + ")"; } }); TreeViewerColumn widgetClassColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE); widgetClassColumn.getColumn().setText("CSS Class"); widgetClassColumn.getColumn().setWidth(100); widgetClassColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object item) { CSSStylableElement element = CssSpyPart.getCSSElement(item); if (element.getCSSClass() == null) { return null; } String classes[] = element.getCSSClass().split(" +"); return classes.length <= 1 ? classes[0] : classes[0] + " (+" + (classes.length - 1) + " others)"; } @Override public String getToolTipText(Object item) { CSSStylableElement element = CssSpyPart.getCSSElement(item); if (element == null) { return null; } StringBuilder sb = new StringBuilder(); sb.append(element.getLocalName()).append(" (").append(element.getNamespaceURI()).append(")"); if (element.getCSSClass() != null) { sb.append("\nClasses:\n "); Util.join(sb, element.getCSSClass().split(" +"), "\n "); } return sb.toString(); } }); TreeViewerColumn widgetIdColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE); widgetIdColumn.getColumn().setWidth(100); widgetIdColumn.getColumn().setText("CSS Id"); widgetIdColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object item) { CSSStylableElement element = CssSpyPart.getCSSElement(item); return element.getCSSId(); } }); TreeColumnLayout widgetsTableLayout = new TreeColumnLayout(); widgetsTableLayout.setColumnData(widgetTypeColumn.getColumn(), new ColumnWeightData(50)); widgetsTableLayout.setColumnData(widgetIdColumn.getColumn(), new ColumnWeightData(40)); widgetsTableLayout.setColumnData(widgetClassColumn.getColumn(), new ColumnWeightData(40)); widgetsComposite.setLayout(widgetsTableLayout); // / HEADERS Composite container = new Composite(sashForm, SWT.NONE); container.setLayout(new GridLayout(2, true)); Label lblCssProperties = new Label(container, SWT.NONE); lblCssProperties.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1)); lblCssProperties.setText("CSS Properties"); Label lblCssRules = new Label(container, SWT.NONE); lblCssRules.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1)); lblCssRules.setText("CSS Rules"); // // THE CSS PROPERTIES TABLE Composite propsComposite = new Composite(container, SWT.BORDER); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); gridData.minimumHeight = 50; propsComposite.setLayoutData(gridData); cssPropertiesViewer = new TableViewer(propsComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); cssPropertiesViewer.setContentProvider(new CSSPropertiesContentProvider()); cssPropertiesViewer.getTable().setLinesVisible(true); cssPropertiesViewer.getTable().setHeaderVisible(true); cssPropertiesViewer.setComparator(new ViewerComparator()); final TextCellEditor textCellEditor = new TextCellEditor(cssPropertiesViewer.getTable()); TableViewerEditor.create(cssPropertiesViewer, new TableViewerFocusCellManager(cssPropertiesViewer, new FocusCellOwnerDrawHighlighter(cssPropertiesViewer)), new ColumnViewerEditorActivationStrategy(cssPropertiesViewer), ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); TableViewerColumn propName = new TableViewerColumn(cssPropertiesViewer, SWT.NONE); propName.getColumn().setWidth(100); propName.getColumn().setText("Property"); propName.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return ((CSSPropertyProvider) element).getPropertyName(); } }); TableViewerColumn propValue = new TableViewerColumn(cssPropertiesViewer, SWT.NONE); propValue.getColumn().setWidth(100); propValue.getColumn().setText("Value"); propValue.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { try { return ((CSSPropertyProvider) element).getValue(); } catch (Exception e) { System.err.println("Error fetching property: " + element + ": " + e); return null; } } }); propValue.setEditingSupport(new EditingSupport(cssPropertiesViewer) { @Override protected CellEditor getCellEditor(Object element) { // do the fancy footwork here to return an appropriate // editor to // the value-type return textCellEditor; } @Override protected boolean canEdit(Object element) { return true; } @Override protected Object getValue(Object element) { try { String value = ((CSSPropertyProvider) element).getValue(); return value == null ? "" : value; } catch (Exception e) { return ""; } } @Override protected void setValue(Object element, Object value) { try { if (value == null || ((String) value).trim().length() == 0) { return; } CSSPropertyProvider provider = (CSSPropertyProvider) element; provider.setValue((String) value); } catch (Exception e) { MessageDialog.openError(activeShell, "Error", "Unable to set property:\n\n" + e.getMessage()); } cssPropertiesViewer.update(element, null); } }); TableColumnLayout propsTableLayout = new TableColumnLayout(); propsTableLayout.setColumnData(propName.getColumn(), new ColumnWeightData(50)); propsTableLayout.setColumnData(propValue.getColumn(), new ColumnWeightData(50)); propsComposite.setLayout(propsTableLayout); // / THE CSS RULES cssRules = new Text(container, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI); cssRules.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); // / THE CSS PROPERTIES TABLE (again) showUnsetProperties = new Button(container, SWT.CHECK); showUnsetProperties.setText("Show unset properties"); showCssFragment = new Button(container, SWT.PUSH); showCssFragment.setText("Show CSS fragment"); showCssFragment.setToolTipText("Generates CSS rule block for the selected widget"); // and for balance new Label(container, SWT.NONE); // / The listeners cssSearchBox.addModifyListener(new ModifyListener() { private Runnable updater; private IProgressMonitor monitor; @Override public void modifyText(ModifyEvent e) { if (monitor != null) { monitor.setCanceled(false); } display.timerExec(200, updater = new Runnable() { @Override public void run() { if (updater == this) { performCSSSearch(monitor = new NullProgressMonitor()); } } }); } }); cssSearchBox.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.ARROW_DOWN && (e.stateMask & SWT.MODIFIER_MASK) == 0) { widgetTreeViewer.getControl().setFocus(); } } }); widgetTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { updateForWidgetSelection(event.getSelection()); showCssFragment.setEnabled(!event.getSelection().isEmpty()); } }); if (isLive()) { container.addMouseMoveListener(e -> { if (followSelection.getSelection()) { update(); } }); } showAllShells.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateWidgetTreeInput(); } }); outer.addDisposeListener(e -> dispose()); showUnsetProperties.setSelection(true); showUnsetProperties.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (showUnsetProperties.getSelection()) { cssPropertiesViewer.removeFilter(unsetPropertyFilter); } else { cssPropertiesViewer.addFilter(unsetPropertyFilter); } } }); showCssFragment.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { showCssFragment(); } @Override public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } }); sashForm.setWeights(new int[] { 50, 50 }); widgetTreeViewer.getControl().setFocus(); return outer; }