/* * @see ISourceViewer#setDocument(IDocument, IAnnotationModel, int, int) */ public void setDocument( IDocument document, IAnnotationModel annotationModel, int modelRangeOffset, int modelRangeLength) { disposeVisualAnnotationModel(); if (annotationModel != null && document != null) { fVisualAnnotationModel = createVisualAnnotationModel(annotationModel); fVisualAnnotationModel.connect(document); } if (modelRangeOffset == -1 && modelRangeLength == -1) super.setDocument(document); else super.setDocument(document, modelRangeOffset, modelRangeLength); if (fVerticalRuler != null) fVerticalRuler.setModel(fVisualAnnotationModel); if (fOverviewRuler != null) fOverviewRuler.setModel(fVisualAnnotationModel); }
/** @see IWorkbenchPart#createPartControl */ public void createPartControl(Composite parent) { viewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP | SWT.READ_ONLY); viewer.setDocument(new Document()); IActionBars bars = getViewSite().getActionBars(); final GlobalAction clearOutputAction = new ClearTextAction(viewer.getDocument()); clearOutputAction.registerAsGlobalAction(bars); final GlobalAction selectAllAction = new SelectAllAction(viewer); selectAllAction.registerAsGlobalAction(bars); // Delete action shortcuts are not captured by the workbench // so we need our key binding service to handle Delete keystrokes for us this.viewer .getControl() .addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.character == SWT.DEL) clearOutputAction.run(); } }); GlobalAction copyAction = new CopyTextSelectionAction(viewer); copyAction.registerAsGlobalAction(bars); bars.getToolBarManager().add(clearOutputAction); bars.updateActionBars(); // creates a context menu with actions and adds it to the viewer control MenuManager menuMgr = new MenuManager(); menuMgr.add(copyAction); menuMgr.add(clearOutputAction); Menu menu = menuMgr.createContextMenu(viewer.getControl()); viewer.getControl().setMenu(menu); getViewSite().getPage().addSelectionListener(this); }
@Override public void createPartControl(Composite parent) { // add controls try { CWMetaInput input = (CWMetaInput) getEditorInput(); CWScript document = new CWScript(input.getRootElement()); List<CWParameter> documentParameters = document.getParameterList(); String documentScript = document.getScript(); /*GridLayout layout = new GridLayout(); layout.numColumns = 1; parent.setLayout(layout);*/ parent.setLayout(new FillLayout(SWT.VERTICAL)); SashForm sashForm = new SashForm(parent, SWT.VERTICAL); // setup table final TableViewer tableViewer = new TableViewer( sashForm, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); // setup name column TableViewerColumn colName = new TableViewerColumn(tableViewer, SWT.NONE); colName.getColumn().setWidth(200); colName.getColumn().setText("Name"); colName.setLabelProvider( new ColumnLabelProvider() { @Override public String getText(Object element) { return ((CWParameter) element).getName(); } }); // setup value column TableViewerColumn colValue = new TableViewerColumn(tableViewer, SWT.NONE); colValue.getColumn().setWidth(200); colValue.getColumn().setText("Type"); colValue.setLabelProvider( new ColumnLabelProvider() { @Override public String getText(Object element) { return ((CWParameter) element).getType(); } }); final Table table = tableViewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); tableViewer.setContentProvider(ArrayContentProvider.getInstance()); tableViewer.setInput(documentParameters); /*GridData gridData = new GridData(); gridData.verticalAlignment = GridData.FILL; gridData.horizontalSpan = 2; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = GridData.FILL;*/ // tableViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); // setup script text area final TextViewer textViewer = new TextViewer(sashForm, SWT.MULTI | SWT.V_SCROLL); textViewer.setDocument(new Document(documentScript)); /*gridData = new GridData(); gridData.verticalAlignment = GridData.FILL; gridData.horizontalSpan = 2; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = GridData.FILL;*/ // textViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); sashForm.setWeights(new int[] {1, 3}); } catch (Exception ex) { System.out.println(ex); } }
@Override protected Composite createPageContainer(Composite parent) { this.editorParent = parent; Composite composite = super.createPageContainer(parent); EditorUtil.initializeScrollbars(getHeaderForm().getForm()); // create left tool bar that replaces form heading label try { FormHeading heading = (FormHeading) getHeaderForm().getForm().getForm().getHead(); Field field = FormHeading.class.getDeclaredField("titleRegion"); // $NON-NLS-1$ field.setAccessible(true); TitleRegion titleRegion = (TitleRegion) field.get(heading); leftToolBarManager = new ToolBarManager(SWT.FLAT); leftToolBar = leftToolBarManager.createControl(titleRegion); leftToolBar.addControlListener( new ControlAdapter() { private boolean ignoreResizeEvents; @Override public void controlResized(ControlEvent e) { if (ignoreResizeEvents) { return; } ignoreResizeEvents = true; try { // the tool bar contents has changed, update state updateHeaderImage(); updateHeaderLabel(); } finally { ignoreResizeEvents = false; } } }); // titleLabel = new Label(titleRegion, SWT.NONE); // need a viewer for copy support TextViewer titleViewer = new TextViewer(titleRegion, SWT.READ_ONLY); // Eclipse 3.3 needs a document, otherwise an NPE is thrown titleViewer.setDocument(new Document()); titleLabel = titleViewer.getTextWidget(); titleLabel.setForeground(heading.getForeground()); titleLabel.setFont(heading.getFont()); // XXX work-around problem that causes field to maintain selection when unfocused titleLabel.addFocusListener( new FocusAdapter() { @Override public void focusLost(FocusEvent e) { titleLabel.setSelection(0); } }); titleRegion.addControlListener( new ControlAdapter() { @Override public void controlResized(ControlEvent e) { // do not create busyLabel to avoid recursion updateSizeAndLocations(); } }); IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class); if (handlerService != null) { textSupport = new CommonTextSupport(handlerService); textSupport.install(titleViewer, false); } } catch (Exception e) { if (!toolBarFailureLogged) { StatusHandler.log( new Status( IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Failed to obtain busy label toolbar", e)); //$NON-NLS-1$ } if (titleLabel != null) { titleLabel.dispose(); titleLabel = null; } if (leftToolBar != null) { leftToolBar.dispose(); leftToolBar = null; } if (leftToolBarManager != null) { leftToolBarManager.dispose(); leftToolBarManager = null; } } updateHeader(); return composite; }