/** * Returns a viewer used to display the contents of this page's console. * * @param parent container for the viewer * @return a viewer used to display the contents of this page's console */ protected TextConsoleViewer createViewer(Composite parent) { return new TextConsoleViewer(parent, fConsole, fConsoleView); }
@Override public Control getControl() { return fViewer != null ? fViewer.getControl() : null; }
public Object getAdapter(Class required) { if (IFindReplaceTarget.class.equals(required)) { return fViewer.getFindReplaceTarget(); } if (Widget.class.equals(required)) { return fViewer.getTextWidget(); } return null; }
/** * The cursor has just be moved to the given offset, the mouse has hovered * over the given offset. Update link rendering. * * @param offset */ protected void updateLinks(int offset) { if (offset >= 0) { IHyperlink link = getHyperlink(offset); if (link != null) { if (link.equals(hyperlink)) { return; } linkEntered(link); return; } } if (hyperlink != null) { linkExited(hyperlink); } }
protected void internalRevealRange(int start, int end) { StyledText textWidget = getTextWidget(); int startLine = documentAdapter.getLineAtOffset(start); int endLine = documentAdapter.getLineAtOffset(end); if (top > -1) { int lines = getVisibleLinesInViewport(); int bottom = top + lines; int delta = Math.max(0, lines - (endLine - startLine)); textWidget.setTopIndex(startLine - delta / 3); updateViewportListeners(INTERNAL); IRegion extent = getExtent(start, start); startPixel = extent.getOffset() + textWidget.getHorizontalPixel(); endPixel = startPixel; } else { IRegion extent = getExtent(start, end); startPixel = extent.getOffset() + textWidget.getHorizontalPixel(); endPixel = startPixel + extent.getLength(); newOffset = startPixel; float index = ((float) newOffset) / ((float) getAverageCharWidth());
@Override public void createControl(Composite parent) { fViewer = createViewer(parent); fViewer.setConsoleWidth(fConsole.getConsoleWidth()); fViewer.setTabWidth(fConsole.getTabWidth()); fConsole.addPropertyChangeListener(this); JFaceResources.getFontRegistry().addListener(this); String id = "#ContextMenu"; //$NON-NLS-1$ if (getConsole().getType() != null) { id = getConsole().getType() + "." + id; //$NON-NLS-1$ } fMenuManager= new MenuManager("#ContextMenu", id); //$NON-NLS-1$ fMenuManager.setRemoveAllWhenShown(true); fMenuManager.addMenuListener(new IMenuListener() { @Override public void menuAboutToShow(IMenuManager m) { contextMenuAboutToShow(m); } }); Menu menu = fMenuManager.createContextMenu(getControl()); getControl().setMenu(menu); createActions(); configureToolBar(getSite().getActionBars().getToolBarManager()); getSite().registerContextMenu(id, fMenuManager, fViewer); getSite().setSelectionProvider(fViewer); fViewer.getSelectionProvider().addSelectionChangedListener(selectionChangedListener); fViewer.addTextListener(textListener); }
/** * Notification a hyperlink has been entered. * * @param link * the link that was entered */ protected void linkEntered(IHyperlink link) { Control control = getTextWidget(); if (hyperlink != null) { linkExited(hyperlink); } hyperlink = link; hyperlink.linkEntered(); control.setCursor(getHandCursor()); control.redraw(); control.addMouseListener(this); }
public void lineGetStyle(LineStyleEvent event) { IDocument document = getDocument(); if (document != null && document.getLength() > 0) { ArrayList ranges = new ArrayList(); Position[] positions = getDocument().getPositions(ConsoleHyperlinkPosition.HYPER_LINK_CATEGORY); Position[] overlap = findPosition(offset, length, positions); Color color = JFaceColors.getHyperlinkText(Display.getCurrent()); if (overlap != null) { StyleRange linkRange = new StyleRange(position.offset, position.length, color, null); linkRange.underline = true; override(ranges, linkRange);
protected void handleDispose() { IDocument document = getDocument(); if (document != null) { document.removeDocumentListener(documentListener); document.removePositionUpdater(positionUpdater); } StyledText styledText = getTextWidget(); styledText.removeLineStyleListener(this); styledText.removeLineBackgroundListener(this); styledText.removeMouseTrackListener(this); handCursor = null; textCursor = null; hyperlink = null; console = null; ColorRegistry colorRegistry = JFaceResources.getColorRegistry(); colorRegistry.removeListener(propertyChangeListener); super.handleDispose(); }
@Override public void textChanged(TextEvent event) { IUpdate findReplace = (IUpdate)fGlobalActions.get(ActionFactory.FIND.getId()); if (findReplace != null) { findReplace.update(); } if (fClearOutputAction != null) { IDocument doc = fViewer.getDocument(); if(doc != null) { fClearOutputAction.setEnabled(doc.getLength() > 0); } } } };
@Override public boolean isEnabled() { return viewer.getHyperlink() != null; }
@Override protected void internalRevealRange(int start, int end) { StyledText textWidget = getTextWidget(); int startLine = documentAdapter.getLineAtOffset(start); int endLine = documentAdapter.getLineAtOffset(end); int lines = getVisibleLinesInViewport(); int bottom = top + lines; int delta = Math.max(0, lines - (endLine - startLine)); textWidget.setTopIndex(startLine - delta / 3); updateViewportListeners(INTERNAL); IRegion extent = getExtent(start, start); startPixel = extent.getOffset() + textWidget.getHorizontalPixel(); endPixel = startPixel; } else { IRegion extent = getExtent(start, end); startPixel = extent.getOffset() + textWidget.getHorizontalPixel(); endPixel = startPixel + extent.getLength(); float index = ((float) newOffset) / ((float) getAverageCharWidth());
public void createControl(Composite parent) { fViewer = createViewer(parent); fViewer.setConsoleWidth(fConsole.getConsoleWidth()); fViewer.setTabWidth(fConsole.getTabWidth()); fConsole.addPropertyChangeListener(this); JFaceResources.getFontRegistry().addListener(this); String id = "#ContextMenu"; //$NON-NLS-1$ if (getConsole().getType() != null) { id = getConsole().getType() + "." + id; //$NON-NLS-1$ } fMenuManager= new MenuManager("#ContextMenu", id); //$NON-NLS-1$ fMenuManager.setRemoveAllWhenShown(true); fMenuManager.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager m) { contextMenuAboutToShow(m); } }); Menu menu = fMenuManager.createContextMenu(getControl()); getControl().setMenu(menu); createActions(); configureToolBar(getSite().getActionBars().getToolBarManager()); getSite().registerContextMenu(id, fMenuManager, fViewer); getSite().setSelectionProvider(fViewer); fViewer.getSelectionProvider().addSelectionChangedListener(selectionChangedListener); fViewer.addTextListener(textListener); }
/** * Notification a hyperlink has been entered. * * @param link * the link that was entered */ protected void linkEntered(IHyperlink link) { Control control = getTextWidget(); if (hyperlink != null) { linkExited(hyperlink); } hyperlink = link; hyperlink.linkEntered(); control.setCursor(getHandCursor()); control.redraw(); control.addMouseListener(this); }
/** * The cursor has just be moved to the given offset, the mouse has hovered * over the given offset. Update link rendering. * * @param offset */ protected void updateLinks(int offset) { if (offset >= 0) { IHyperlink link = getHyperlink(offset); if (link != null) { if (link.equals(hyperlink)) { return; } linkEntered(link); return; } } if (hyperlink != null) { linkExited(hyperlink); } }
@Override public void lineGetStyle(LineStyleEvent event) { IDocument document = getDocument(); if (document != null && document.getLength() > 0) { ArrayList<StyleRange> ranges = new ArrayList<StyleRange>(); Position[] positions = getDocument().getPositions(ConsoleHyperlinkPosition.HYPER_LINK_CATEGORY); Position[] overlap = findPosition(offset, length, positions); Color color = JFaceColors.getHyperlinkText(Display.getCurrent()); if (overlap != null) { StyleRange linkRange = new StyleRange(position.offset, position.length, color, null); linkRange.underline = true; override(ranges, linkRange);
@Override protected void handleDispose() { IDocument document = getDocument(); if (document != null) { document.removeDocumentListener(documentListener); document.removePositionUpdater(positionUpdater); } StyledText styledText = getTextWidget(); styledText.removeLineStyleListener(this); styledText.removeLineBackgroundListener(this); styledText.removeMouseTrackListener(this); if(handCursor != null) { handCursor.dispose(); } handCursor = null; if(textCursor != null) { textCursor.dispose(); } textCursor = null; hyperlink = null; console = null; ColorRegistry colorRegistry = JFaceResources.getColorRegistry(); colorRegistry.removeListener(propertyChangeListener); super.handleDispose(); }
public void update(DocumentEvent event) { try { IDocument document = getDocument(); if (document != null) { Position[] positions = document.getPositions(ConsoleHyperlinkPosition.HYPER_LINK_CATEGORY); for (int i = 0; i < positions.length; i++) { Position position = positions[i]; if (position.offset == event.fOffset && position.length<=event.fLength) { position.delete(); } if (position.isDeleted) { document.removePosition(ConsoleHyperlinkPosition.HYPER_LINK_CATEGORY, position); } } } } catch (BadPositionCategoryException e) { } } };
public boolean isEnabled() { return viewer.getHyperlink() != null; }
@SuppressWarnings("unchecked") @Override public <T> T getAdapter(Class<T> required) { if (IFindReplaceTarget.class.equals(required)) { return (T) fViewer.getFindReplaceTarget(); } if (Widget.class.equals(required)) { return (T) fViewer.getTextWidget(); } return null; }