* Xerox/PARC initial implementation
* ******************************************************************/
-
package org.aspectj.tools.ajbrowser.ui;
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Vector;
-import javax.swing.*;
+import javax.swing.Box;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
-import org.aspectj.ajde.*;
+import org.aspectj.ajde.EditorAdapter;
+import org.aspectj.ajde.EditorListener;
import org.aspectj.bridge.ISourceLocation;
import org.aspectj.tools.ajbrowser.core.BrowserErrorHandler;
/**
* Responsible for controlling the editor.
- *
- * @todo remove coupling to <CODE>BasicEditor</CODE>
- * @author Mik Kersten
+ *
+ * @todo remove coupling to <CODE>BasicEditor</CODE>
+ * @author Mik Kersten
*/
public class EditorManager {
- /** @return true if input modifiers have shift down */
- public static boolean isShiftDown(int modifiers) {
- return (0 != (modifiers & KeyEvent.SHIFT_MASK));
- }
-
- private EditorAdapter editor = null;
- private BasicEditor basicEditor = null;
- private ArrayList editorListeners = new ArrayList();
- private Vector editors = new Vector();
- private JPanel editor_panel = null;
- private Box editors_box = Box.createVerticalBox();
-
- public EditorManager(EditorAdapter ajdeEditor) {
- if (ajdeEditor instanceof BasicEditor) {
- this.basicEditor = (BasicEditor)ajdeEditor;
- editors.add(basicEditor);
- editors_box.add(basicEditor.getPanel());
- editor_panel = new JPanel(new BorderLayout());
- editor_panel.add(editors_box, BorderLayout.CENTER);
- } else {
- editors.add(ajdeEditor);
- this.editor = ajdeEditor;
- }
- }
-
- public void addListener(EditorListener editorListener) {
- editorListeners.add(editorListener);
- }
-
- public void removeListener(EditorListener editorListener) {
- editorListeners.remove(editorListener);
- }
-
- public void notifyCurrentFileChanged(String filePath) {
- for (Iterator it = editorListeners.iterator(); it.hasNext(); ) {
- ((EditorListener)it.next()).currentFileChanged(filePath);
- }
- }
-
- public void addViewForSourceLine(final String filePath, final int lineNumber) {
- if (basicEditor == null) return;
- editors_box.remove(basicEditor.getPanel());
- final BasicEditor newEditor = new BasicEditor();
- editors.add(newEditor);
-
- Runnable update = new Runnable() {
- public void run() {
- editors_box.add(newEditor.getPanel());
- newEditor.showSourceLine(filePath, lineNumber, true);
- //AjdeUIManager.getDefault().getIdeUIAdapter().resetGUI();
- }
- };
-
- if (SwingUtilities.isEventDispatchThread()) {
- update.run();
- } else {
- try {
- SwingUtilities.invokeAndWait(update);
- } catch (Exception e) {
- BrowserErrorHandler.handleError("Could not add view for source line.", e);
- }
- }
- }
-
- public String getCurrFile() {
- if (basicEditor != null) {
- return basicEditor.getCurrFile();
- } else {
- return editor.getCurrFile();
- }
- }
-
-
+ /** @return true if input modifiers have shift down */
+ public static boolean isShiftDown(int modifiers) {
+ return (0 != (modifiers & KeyEvent.SHIFT_MASK));
+ }
+
+ private EditorAdapter editor = null;
+ private BasicEditor basicEditor = null;
+ private ArrayList<EditorListener> editorListeners = new ArrayList<EditorListener>();
+ private Vector<EditorAdapter> editors = new Vector<EditorAdapter>();
+ private JPanel editor_panel = null;
+ private Box editors_box = Box.createVerticalBox();
+
+ public EditorManager(EditorAdapter ajdeEditor) {
+ if (ajdeEditor instanceof BasicEditor) {
+ this.basicEditor = (BasicEditor) ajdeEditor;
+ editors.add(basicEditor);
+ editors_box.add(basicEditor.getPanel());
+ editor_panel = new JPanel(new BorderLayout());
+ editor_panel.add(editors_box, BorderLayout.CENTER);
+ } else {
+ editors.add(ajdeEditor);
+ this.editor = ajdeEditor;
+ }
+ }
+
+ public void addListener(EditorListener editorListener) {
+ editorListeners.add(editorListener);
+ }
+
+ public void removeListener(EditorListener editorListener) {
+ editorListeners.remove(editorListener);
+ }
+
+ public void notifyCurrentFileChanged(String filePath) {
+ for (Iterator it = editorListeners.iterator(); it.hasNext();) {
+ ((EditorListener) it.next()).currentFileChanged(filePath);
+ }
+ }
+
+ public void addViewForSourceLine(final String filePath, final int lineNumber) {
+ if (basicEditor == null)
+ return;
+ editors_box.remove(basicEditor.getPanel());
+ final BasicEditor newEditor = new BasicEditor();
+ editors.add(newEditor);
+
+ Runnable update = new Runnable() {
+ public void run() {
+ editors_box.add(newEditor.getPanel());
+ newEditor.showSourceLine(filePath, lineNumber, true);
+ // AjdeUIManager.getDefault().getIdeUIAdapter().resetGUI();
+ }
+ };
+
+ if (SwingUtilities.isEventDispatchThread()) {
+ update.run();
+ } else {
+ try {
+ SwingUtilities.invokeAndWait(update);
+ } catch (Exception e) {
+ BrowserErrorHandler.handleError("Could not add view for source line.", e);
+ }
+ }
+ }
+
+ public String getCurrFile() {
+ if (basicEditor != null) {
+ return basicEditor.getCurrFile();
+ } else {
+ return editor.getCurrFile();
+ }
+ }
+
public void showSourceLine(ISourceLocation sourceLocation, boolean highlight) {
if (sourceLocation != null) {
- showSourceLine(
- sourceLocation.getSourceFile().getAbsolutePath(),
- sourceLocation.getLine(),
- highlight);
- }
+ showSourceLine(sourceLocation.getSourceFile().getAbsolutePath(), sourceLocation.getLine(), highlight);
+ }
}
- /**
- * @todo remove "instanceof AjdeManager" hack
- */
- public void showSourceLine(String filePath, int lineNumber, boolean highlight) {
- if (editors.size() > 1) {
- editors_box.removeAll();
- editors_box.add(basicEditor.getPanel());
- //AjdeUIManager.getDefault().getIdeUIAdapter().resetGUI();
- editors.removeAllElements();
- editors.add(basicEditor);
- }
-
- if (basicEditor != null) {
- basicEditor.showSourceLine(filePath, lineNumber, highlight);
- } else {
- editor.showSourceLine(filePath, lineNumber, highlight);
- }
- }
-
- public void pasteToCaretPos(String text) {
- if (basicEditor != null) {
- basicEditor.pasteToCaretPos(text);
- } else {
- editor.pasteToCaretPos(text);
- }
- }
-
- public void showSourcelineAnnotation(String filePath, int lineNumber, java.util.List items) {
- editor.showSourcelineAnnotation(filePath, lineNumber, items);
- }
-
- public void saveContents() {
- try {
- for (Iterator it = editors.iterator(); it.hasNext(); ) {
- ((EditorAdapter)it.next()).saveContents();
- }
- } catch (IOException ioe) {
- BrowserErrorHandler.handleError("Editor could not save the current file.", ioe);
- }
- }
-
- public JPanel getEditorPanel() {
- if (editor_panel != null) {
- return editor_panel;
- } else {
- return basicEditor.getPanel();
- }
- }
-}
+ /**
+ * @todo remove "instanceof AjdeManager" hack
+ */
+ public void showSourceLine(String filePath, int lineNumber, boolean highlight) {
+ if (editors.size() > 1) {
+ editors_box.removeAll();
+ editors_box.add(basicEditor.getPanel());
+ // AjdeUIManager.getDefault().getIdeUIAdapter().resetGUI();
+ editors.removeAllElements();
+ editors.add(basicEditor);
+ }
+
+ if (basicEditor != null) {
+ basicEditor.showSourceLine(filePath, lineNumber, highlight);
+ } else {
+ editor.showSourceLine(filePath, lineNumber, highlight);
+ }
+ }
+
+ public void pasteToCaretPos(String text) {
+ if (basicEditor != null) {
+ basicEditor.pasteToCaretPos(text);
+ } else {
+ editor.pasteToCaretPos(text);
+ }
+ }
+
+ public void showSourcelineAnnotation(String filePath, int lineNumber, java.util.List items) {
+ editor.showSourcelineAnnotation(filePath, lineNumber, items);
+ }
+ public void saveContents() {
+ try {
+ for (Iterator it = editors.iterator(); it.hasNext();) {
+ ((EditorAdapter) it.next()).saveContents();
+ }
+ } catch (IOException ioe) {
+ BrowserErrorHandler.handleError("Editor could not save the current file.", ioe);
+ }
+ }
+ public JPanel getEditorPanel() {
+ if (editor_panel != null) {
+ return editor_panel;
+ } else {
+ return basicEditor.getPanel();
+ }
+ }
+}