...
Add the following methods to
SimpleEditorPart
:Code Block language java /** * Returns the text that is currently displayed in the editor. * @return the currently displayed text */ public String getText() { return getDocumentProvider().getDocument(getEditorInput()).get(); } /** The listener that is currently registered for this editor. */ private IDocumentListener registeredListener; /** * Registers the given runnable as listener for changes to the text * of this editor. * @param runnable a runnable to register as text listener */ public void registerTextListener(final Runnable runnable) { registeredListener = new IDocumentListener() { public void documentAboutToBeChanged(DocumentEvent event) {} public void documentChanged(DocumentEvent event) { runnable.run(); } }; getDocumentProvider().getDocument(getEditorInput()) .addDocumentListener(registeredListener); } /** * Removes the last registered text listener. */ public void disposeTextListener() { if (registeredListener != null) { if (getDocumentProvider() != null) { getDocumentProvider().getDocument(getEditorInput()) .removeDocumentListener(registeredListener); } registeredListener = null; } }
Add the following code to
TapeViewPart
:Code Block language java /** The editor part that is currently set as input for the viewer. */ private SimpleEditorPart currentInput; /** * Sets the displayed text of the given editor part as input of the * viewer, if the editor part is a SimpleEditorPart. * @param part workbench part to set as input */ private void setInput(final IWorkbenchPart part) { if (part instanceof SimpleEditorPart && part != currentInput) { if (currentInput != null) { currentInput.disposeTextListener(); } currentInput = (SimpleEditorPart) part; Runnable runnable = new Runnable() { public void run() { tape.setText(new StringBuffer(currentInput.getText())); tableViewer.refresh(); } }; runnable.run(); currentInput.registerTextListener(runnable); } }
Add the following code to
createPartControl()
:Code Block language java IWorkbenchWindow workbenchWindow = getSite().getWorkbenchWindow(); IWorkbenchPage activePage = workbenchWindow.getActivePage(); if (activePage != null) { setInput(activePage.getActivePart()); } workbenchWindow.getPartService().addPartListener(new IPartListener() { public void partActivated(final IWorkbenchPart part) { setInput(part); } public void partDeactivated(final IWorkbenchPart part) {} public void partBroughtToTop(final IWorkbenchPart part) {} public void partClosed(final IWorkbenchPart part) {} public void partOpened(final IWorkbenchPart part) {} });
...