Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.aspectj.tools.ajbrowser.ui.swing.TopFrame Maven / Gradle / Ivy
/* *******************************************************************
* 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 v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/
package org.aspectj.tools.ajbrowser.ui.swing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.border.Border;
import javax.swing.filechooser.FileFilter;
import org.aspectj.ajde.Ajde;
import org.aspectj.ajde.ui.swing.AJButtonMenuCombo;
import org.aspectj.ajde.ui.swing.BuildConfigPopupMenu;
import org.aspectj.ajde.ui.swing.MultiStructureViewPanel;
import org.aspectj.asm.IProgramElement;
import org.aspectj.tools.ajbrowser.BrowserManager;
import org.aspectj.tools.ajbrowser.ui.BrowserMessageHandler;
import org.aspectj.tools.ajbrowser.ui.EditorManager;
/**
* UI for standalone operation.
*
* @author Mik Kersten
*/
public class TopFrame extends JFrame {
private static final long serialVersionUID = 1007473581156451702L;
private static final File CURRENT_DIR = new File(".");
public JLabel statusText_label = new JLabel();
private JPanel editor_panel = null;
private JPanel sourceEditor_panel = null;
private JMenuBar menuBar = new JMenuBar();
private JMenu jMenu1 = new JMenu();
private JMenu jMenu2 = new JMenu();
private JMenuItem projectBuild_menuItem = new JMenuItem();
private FlowLayout left_flowLayout = new FlowLayout();
private JMenuItem jMenuItem1 = new JMenuItem();
private JMenuItem exit_menuItem = new JMenuItem();
private JSplitPane top_splitPane = new JSplitPane();
private BorderLayout borderLayout3 = new BorderLayout();
private JMenuItem projectRun_menuItem = new JMenuItem();
private JMenuItem projectRunOther_menuItem = new JMenuItem();
private JPanel status_panel = new JPanel();
private BorderLayout borderLayout4 = new BorderLayout();
private Border emptyBorder = BorderFactory.createEmptyBorder();
private JPanel toolbar_panel = new JPanel();
private JSplitPane right_splitPane = new JSplitPane();
private MessageHandlerPanel messages_panel = null;
private JMenu tools_menu = new JMenu();
private JMenuItem joinpointProbe_menuItem = new JMenuItem();
private JMenuItem projectDebug_menuItem = new JMenuItem();
private JMenuItem svProperties_menuItem = new JMenuItem();
private File lastChosenDir = CURRENT_DIR;
JPanel toolBar_panel = new JPanel();
JToolBar build_toolBar = new JToolBar();
JButton closeConfig_button = new JButton();
JButton openConfig_button = new JButton();
JButton run_button = new JButton();
JToolBar project_toolBar = new JToolBar();
JButton save_button = new JButton();
JButton options_button = new JButton();
JButton editConfig_button = new JButton();
JToolBar file_toolBar = new JToolBar();
JPanel filler_panel = new JPanel();
BorderLayout borderLayout5 = new BorderLayout();
BorderLayout borderLayout6 = new BorderLayout();
Border border8;
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JPanel multiView_panel;
private AJButtonMenuCombo buildCombo;
public void init(MultiStructureViewPanel multiViewPanel,
MessageHandlerPanel compilerMessagesPanel, JPanel editorPanel) {
try {
this.multiView_panel = multiViewPanel;
this.messages_panel = compilerMessagesPanel;
this.editor_panel = editorPanel;
this.sourceEditor_panel = editorPanel;
jbInit();
svProperties_menuItem.setIcon(Ajde.getDefault()
.getIconRegistry().getBrowserOptionsIcon());
projectBuild_menuItem.setIcon(Ajde.getDefault()
.getIconRegistry().getBuildIcon());
projectRun_menuItem.setIcon(Ajde.getDefault()
.getIconRegistry().getExecuteIcon());
projectRunOther_menuItem.setIcon(Ajde.getDefault()
.getIconRegistry().getExecuteIcon());
projectDebug_menuItem.setIcon(Ajde.getDefault()
.getIconRegistry().getDebugIcon());
this.setJMenuBar(menuBar);
this.setIconImage(((ImageIcon) Ajde.getDefault()
.getIconRegistry().getStructureSwingIcon(
IProgramElement.Kind.ADVICE)).getImage());
this.setLocation(75, 10);
this.setSize(900, 650);
this.setTitle(BrowserManager.TITLE);
// bindKeys();
fixButtonBorders();
messages_panel.setVisible(false);
JPopupMenu orderMenu = new BuildConfigPopupMenu(
new AbstractAction() {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
BrowserManager.getDefault().saveAll();
}
});
buildCombo = new AJButtonMenuCombo("Build", "Build", Ajde
.getDefault().getIconRegistry().getBuildIcon(), orderMenu,
false);
build_toolBar.add(buildCombo, 1);
refreshBuildMenu();
} catch (Exception e) {
e.printStackTrace();
}
}
private void refreshBuildMenu() {
JPopupMenu orderMenu = new BuildConfigPopupMenu(new AbstractAction() {
private static final long serialVersionUID = -3204840278758386318L;
public void actionPerformed(ActionEvent arg0) {
BrowserManager.getDefault().saveAll();
}
});
buildCombo.setMenu(orderMenu);
}
public void setEditorPanel(JPanel panel) {
editor_panel = panel;
right_splitPane.remove(editor_panel);
right_splitPane.add(panel, JSplitPane.TOP);
panel.setVisible(true);
}
/**
* @todo get rid of this method and make jbinit() work properly
*/
private void fixButtonBorders() {
run_button.setBorder(null);
options_button.setBorder(null);
openConfig_button.setBorder(null);
closeConfig_button.setBorder(null);
save_button.setBorder(null);
editConfig_button.setBorder(null);
}
private void jbInit() throws Exception {
border8 = BorderFactory.createCompoundBorder(BorderFactory
.createEtchedBorder(Color.white, new Color(156, 156, 158)),
BorderFactory.createEmptyBorder(2, 2, 2, 2));
emptyBorder = BorderFactory.createEmptyBorder(2, 2, 2, 2);
jMenu1.setFont(new java.awt.Font("Dialog", 0, 11));
jMenu1.setText("File");
jMenu1.setMnemonic(KeyEvent.VK_F);
jMenu2.setFont(new java.awt.Font("Dialog", 0, 11));
jMenu2.setText("Project");
jMenu2.setMnemonic(KeyEvent.VK_P);
projectBuild_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
projectBuild_menuItem.setText("Build");
projectBuild_menuItem.setMnemonic(KeyEvent.VK_B);
projectBuild_menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_B, ActionEvent.ALT_MASK));
projectBuild_menuItem
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
projectBuild_menuItem_actionPerformed(e);
}
});
left_flowLayout.setAlignment(FlowLayout.LEFT);
jMenuItem1.setFont(new java.awt.Font("Dialog", 0, 11));
jMenuItem1.setText("Save");
jMenuItem1.setMnemonic(KeyEvent.VK_S);
jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
ActionEvent.ALT_MASK));
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem1_actionPerformed(e);
}
});
exit_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
exit_menuItem.setText("Exit");
exit_menuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
exit_menuItem_actionPerformed(e);
}
});
top_splitPane.setPreferredSize(new Dimension(706, 800));
top_splitPane.setDividerSize(4);
this.getContentPane().setLayout(borderLayout3);
projectRun_menuItem.setEnabled(true);
projectRun_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
projectRun_menuItem.setText("Run in same VM");
projectRun_menuItem
.setToolTipText("Run in same VM (hold shift down to run in separate process)");
projectRun_menuItem.setMnemonic(KeyEvent.VK_R);
projectRun_menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_R, ActionEvent.ALT_MASK));
projectRun_menuItem
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
projectRun_menuItem_actionPerformed(e);
}
});
projectRunOther_menuItem.setEnabled(true);
projectRunOther_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
projectRunOther_menuItem.setText("Run in separate process");
projectRunOther_menuItem.setMnemonic(KeyEvent.VK_P);
projectRunOther_menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_P, ActionEvent.ALT_MASK));
projectRunOther_menuItem
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
projectRunOther_menuItem_actionPerformed(e);
}
});
statusText_label.setFont(new java.awt.Font("Dialog", 0, 11));
statusText_label.setBorder(BorderFactory.createLoweredBevelBorder());
statusText_label.setMaximumSize(new Dimension(2000, 20));
statusText_label.setPreferredSize(new Dimension(300, 20));
status_panel.setLayout(borderLayout4);
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(WindowEvent e) {
this_windowClosed(e);
}
public void windowClosing(WindowEvent e) {
this_windowClosing(e);
}
});
toolbar_panel.setLayout(borderLayout5);
right_splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
right_splitPane.setBorder(null);
right_splitPane.setDividerSize(4);
tools_menu.setFont(new java.awt.Font("Dialog", 0, 11));
tools_menu.setText("Tools");
tools_menu.setMnemonic(KeyEvent.VK_T);
projectDebug_menuItem.setEnabled(false);
projectDebug_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
projectDebug_menuItem.setText("Debug");
svProperties_menuItem
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
svProperties_menuItem_actionPerformed(e);
}
});
svProperties_menuItem.setText("Options...");
svProperties_menuItem.setActionCommand("AJDE Console...");
svProperties_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
svProperties_menuItem.setMnemonic(KeyEvent.VK_O);
svProperties_menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_O, ActionEvent.ALT_MASK));
build_toolBar.setBorder(emptyBorder);
build_toolBar.setFloatable(false);
closeConfig_button.setMaximumSize(new Dimension(100, 20));
closeConfig_button.setEnabled(true);
closeConfig_button.setFont(new java.awt.Font("Dialog", 0, 11));
closeConfig_button.setBorder(null);
closeConfig_button.setMinimumSize(new Dimension(24, 20));
closeConfig_button.setPreferredSize(new Dimension(20, 20));
closeConfig_button.setToolTipText("Close build configuration");
closeConfig_button.setIcon(Ajde.getDefault().getIconRegistry()
.getCloseConfigIcon());
closeConfig_button
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
closeConfig_button_actionPerformed(e);
}
});
openConfig_button.setMaximumSize(new Dimension(100, 20));
openConfig_button.setEnabled(true);
openConfig_button.setFont(new java.awt.Font("Dialog", 0, 11));
openConfig_button.setBorder(null);
openConfig_button.setMinimumSize(new Dimension(24, 20));
openConfig_button.setPreferredSize(new Dimension(20, 20));
openConfig_button.setToolTipText("Select build configuration...");
openConfig_button.setIcon(Ajde.getDefault().getIconRegistry()
.getOpenConfigIcon());
openConfig_button
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
openConfig_button_actionPerformed(e);
}
});
run_button.setMaximumSize(new Dimension(60, 20));
run_button.setEnabled(true);
run_button.setFont(new java.awt.Font("Dialog", 0, 11));
run_button.setBorder(null);
run_button.setMinimumSize(new Dimension(24, 20));
run_button.setPreferredSize(new Dimension(20, 20));
run_button
.setToolTipText("Run in same VM (hold shift down to run in separate process)");
run_button.setIcon(Ajde.getDefault().getIconRegistry()
.getExecuteIcon());
run_button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
run_button_actionPerformed(e);
}
});
project_toolBar.setBorder(emptyBorder);
save_button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
save_button_actionPerformed(e);
}
});
save_button.setIcon(Ajde.getDefault().getIconRegistry()
.getSaveIcon());
save_button.setText("Save");
save_button.setToolTipText("Save");
save_button.setPreferredSize(new Dimension(55, 20));
save_button.setMinimumSize(new Dimension(24, 20));
save_button.setFont(new java.awt.Font("Dialog", 0, 11));
save_button.setBorder(null);
save_button.setMaximumSize(new Dimension(60, 20));
options_button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
options_button_actionPerformed(e);
}
});
options_button.setIcon(Ajde.getDefault().getIconRegistry()
.getBrowserOptionsIcon());
options_button.setText("Options");
options_button.setToolTipText("Options...");
options_button.setPreferredSize(new Dimension(60, 20));
options_button.setMinimumSize(new Dimension(24, 20));
options_button.setFont(new java.awt.Font("Dialog", 0, 11));
options_button.setBorder(null);
options_button.setMaximumSize(new Dimension(80, 20));
editConfig_button
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
editConfig_button_actionPerformed(e);
}
});
editConfig_button.setIcon(Ajde.getDefault().getIconRegistry()
.getStructureSwingIcon(IProgramElement.Kind.FILE_LST));
editConfig_button.setText("Edit Config");
editConfig_button.setToolTipText("Edit Config...");
editConfig_button.setPreferredSize(new Dimension(80, 20));
editConfig_button.setMinimumSize(new Dimension(24, 20));
editConfig_button.setFont(new java.awt.Font("Dialog", 0, 11));
editConfig_button.setBorder(null);
editConfig_button.setMaximumSize(new Dimension(80, 20));
file_toolBar.setBorder(emptyBorder);
toolBar_panel.setLayout(borderLayout6);
jLabel1.setFont(new java.awt.Font("Dialog", 0, 11));
jLabel1.setText(" Build: ");
jLabel2.setText(" Run: ");
jLabel2.setFont(new java.awt.Font("Dialog", 0, 11));
// fileStructure_panel.setFont(new java.awt.Font("Dialog", 0, 11));
// browser_panel.setFont(new java.awt.Font("Dialog", 0, 11));
this.getContentPane().add(top_splitPane, BorderLayout.CENTER);
top_splitPane.add(right_splitPane, JSplitPane.RIGHT);
top_splitPane.add(multiView_panel, JSplitPane.LEFT);
right_splitPane.add(messages_panel, JSplitPane.BOTTOM);
right_splitPane.add(editor_panel, JSplitPane.TOP);
// structureView_pane.add(fileStructure_panel, JSplitPane.RIGHT);
// structureView_pane.add(browser_panel, JSplitPane.LEFT);
this.getContentPane().add(status_panel, BorderLayout.SOUTH);
status_panel.add(statusText_label, BorderLayout.CENTER);
this.getContentPane().add(toolbar_panel, BorderLayout.NORTH);
toolbar_panel.add(filler_panel, BorderLayout.CENTER);
toolbar_panel.add(toolBar_panel, BorderLayout.WEST);
// file_toolBar.add(editConfig_button, null);
file_toolBar.add(save_button, null);
file_toolBar.add(options_button, null);
toolBar_panel.add(build_toolBar, BorderLayout.WEST);
toolBar_panel.add(project_toolBar, BorderLayout.CENTER);
project_toolBar.add(jLabel2, null);
project_toolBar.add(run_button, null);
build_toolBar.add(jLabel1, null);
build_toolBar.add(openConfig_button, null);
build_toolBar.add(closeConfig_button, null);
toolBar_panel.add(file_toolBar, BorderLayout.EAST);
menuBar.add(jMenu1);
menuBar.add(jMenu2);
menuBar.add(tools_menu);
jMenu1.add(jMenuItem1);
jMenu1.addSeparator();
jMenu1.add(exit_menuItem);
jMenu2.add(projectBuild_menuItem);
jMenu2.add(projectRun_menuItem);
jMenu2.add(projectRunOther_menuItem);
// jMenu2.add(projectDebug_menuItem);
tools_menu.add(joinpointProbe_menuItem);
tools_menu.add(svProperties_menuItem);
top_splitPane.setDividerLocation(380);
right_splitPane.setDividerLocation(500);
project_toolBar.addSeparator();
project_toolBar.addSeparator();
}
private void exit_menuItem_actionPerformed(ActionEvent e) {
quit();
}
private void this_windowClosing(WindowEvent e) {
quit();
}
private void quit() {
this.dispose();
System.exit(0);
}
void treeMode_comboBox_actionPerformed(ActionEvent e) {
}
void save_button_actionPerformed(ActionEvent e) {
BrowserManager.getDefault().getEditorManager().saveContents();
}
void this_windowClosed(WindowEvent e) {
quit();
}
public void showMessagesPanel(BrowserMessageHandler handler) {
right_splitPane.setDividerLocation(right_splitPane.getHeight() - 100);
messages_panel.showMessageHandlerPanel(handler, true);
}
public void hideMessagesPanel(BrowserMessageHandler handler) {
right_splitPane.setDividerLocation(right_splitPane.getHeight());
messages_panel.showMessageHandlerPanel(handler, false);
}
void jMenuItem1_actionPerformed(ActionEvent e) {
BrowserManager.getDefault().getEditorManager().saveContents();
}
void projectBuild_menuItem_actionPerformed(ActionEvent e) {
BrowserManager.getDefault().saveAll();
if (EditorManager.isShiftDown(e.getModifiers())) {
buildFresh();
} else {
build();
}
}
void run_button_actionPerformed(ActionEvent e) {
if (EditorManager.isShiftDown(e.getModifiers())) {
runInNewVM();
} else {
runInSameVM();
}
}
void projectRunOther_menuItem_actionPerformed(ActionEvent e) {
runInNewVM();
}
void projectRun_menuItem_actionPerformed(ActionEvent e) {
if (EditorManager.isShiftDown(e.getModifiers())) {
runInNewVM();
} else {
runInSameVM();
}
}
void build_button_actionPerformed(ActionEvent e) {
BrowserManager.getDefault().saveAll();
if (EditorManager.isShiftDown(e.getModifiers())) {
buildFresh();
} else {
build();
}
}
void options_button_actionPerformed(ActionEvent e) {
Ajde.getDefault().showOptionsFrame();
}
void editConfig_button_actionPerformed(ActionEvent e) {
BrowserManager.getDefault().openFile(
Ajde.getDefault().getBuildConfigManager()
.getActiveConfigFile());
refreshBuildMenu();
}
public void resetSourceEditorPanel() {
right_splitPane.removeAll();
right_splitPane.add(sourceEditor_panel, JSplitPane.TOP);
}
private void svProperties_menuItem_actionPerformed(ActionEvent e) {
Ajde.getDefault().showOptionsFrame();
}
private void openConfig_button_actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(lastChosenDir);
fileChooser.setFileFilter(new FileFilter() {
public boolean accept(File f) {
return (f.getPath().endsWith(".lst") || f.isDirectory());
}
public String getDescription() {
return "AspectJ Build Configuration (*.lst)";
}
});
int returnVal = fileChooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File result = fileChooser.getSelectedFile();
String path = result.getAbsolutePath();// .replace('\\', '/');
if (!Ajde.getDefault().getBuildConfigManager()
.getAllBuildConfigFiles().contains(path)) {
Ajde.getDefault().getBuildConfigManager()
.getAllBuildConfigFiles().add(0, path);
}
Ajde.getDefault().getBuildConfigManager().setActiveConfigFile(
path);
lastChosenDir = result.getParentFile();
if (null == lastChosenDir) {
lastChosenDir = CURRENT_DIR;
}
refreshBuildMenu();
}
}
private void closeConfig_button_actionPerformed(ActionEvent e) {
Ajde.getDefault().getBuildConfigManager()
.getAllBuildConfigFiles().remove(
Ajde.getDefault().getBuildConfigManager()
.getActiveConfigFile());
if (!Ajde.getDefault().getBuildConfigManager()
.getAllBuildConfigFiles().isEmpty()) {
Ajde.getDefault().getBuildConfigManager().setActiveConfigFile(
(String) Ajde.getDefault().getBuildConfigManager()
.getAllBuildConfigFiles().get(0));
}
refreshBuildMenu();
}
private void buildFresh() {
Ajde.getDefault().runBuildInDifferentThread(Ajde.getDefault()
.getBuildConfigManager().getActiveConfigFile(), true);
}
private void build() {
Ajde.getDefault().runBuildInDifferentThread(Ajde.getDefault()
.getBuildConfigManager().getActiveConfigFile(), false);
}
private void runInSameVM() {
Ajde.getDefault().runInSameVM();
}
private void runInNewVM() {
Ajde.getDefault().runInNewVM();
}
}