org.aspectj.tools.ajbrowser.ui.EditorManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aspectjtools Show documentation
Show all versions of aspectjtools Show documentation
Tools from the AspectJ project
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v 2.0
* which accompanies this distribution and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
*
* Contributors:
* 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.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.Box;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
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 BasicEditor
* @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 List 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 (EditorListener editorListener : editorListeners) {
editorListener.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);
}
}
/**
* 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 (EditorAdapter editorAdapter : editors) {
editorAdapter.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();
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy