All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aspectj.ajde.ui.swing.BrowserView Maven / Gradle / Ivy

Go to download

AspectJ tools most notably contains the AspectJ compiler (AJC). AJC applies aspects to Java classes during compilation, fully replacing Javac for plain Java classes and also compiling native AspectJ or annotation-based @AspectJ syntax. Furthermore, AJC can weave aspects into existing class files in a post-compile binary weaving step. This library is a superset of AspectJ weaver and hence also of AspectJ runtime.

There is a newer version: 1.9.22.1
Show newest version
/* *******************************************************************
 * 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
 *     Helen Hawkins  Converted to new interface (bug 148190)
 * ******************************************************************/


package org.aspectj.ajde.ui.swing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.ListCellRenderer;
import javax.swing.border.Border;

import org.aspectj.ajde.Ajde;
import org.aspectj.ajde.IconRegistry;
import org.aspectj.asm.IProgramElement;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.Message;

/**
 * @author Mik Kersten
 */
class BrowserView extends JPanel {
	private static final long serialVersionUID = 1L;
//	private BrowserViewPanel masterView;
    private BrowserViewPanel slaveView;
    private boolean slaveViewVisible = false;
    private String lastSelectedConfig = "";

    private IconRegistry icons = null;
    private BorderLayout borderLayout1 = new BorderLayout();
    private Border default_border;
    private JPanel toolBar_panel = new JPanel();
    private BorderLayout borderLayout2 = new BorderLayout();
    JPanel mainToolBar_panel = new JPanel();
    JToolBar config_toolBar = new JToolBar();
    JComboBox configs_comboBox = null;
    BorderLayout borderLayout3 = new BorderLayout();
    JToolBar nav_toolBar = new JToolBar();
    JButton forward_button = new JButton();
    JButton back_button = new JButton();
    GridLayout gridLayout1 = new GridLayout();
    JSplitPane views_splitPane = new JSplitPane();
    JToolBar command_toolBar = new JToolBar();
    JToggleButton splitView_button = new JToggleButton();
    JToggleButton zoomToFile_button = new JToggleButton();
    JButton joinpointProbe_button = new JButton();

    public BrowserView(BrowserViewPanel masterView, BrowserViewPanel slaveView, IconRegistry icons) {
        try {
 //           this.masterView = masterView;
            this.slaveView = slaveView;
            this.icons = icons;
            configs_comboBox = new JComboBox(Ajde.getDefault().getBuildConfigManager().getAllBuildConfigFiles().toArray());
            configs_comboBox.setRenderer(new ConfigsCellRenderer());
//            configs_comboBox.addItemListener(new ItemListener() {
//            	public void itemStateChanged(ItemEvent e) {
//            		Ajde.getDefault().getConfigurationManager().setCurrConfigFile(lastSelectedConfig);
//            	}
//            });

            if (Ajde.getDefault().getBuildConfigManager().getAllBuildConfigFiles().size() > 0) {
            	Ajde.getDefault().getBuildConfigManager().setActiveConfigFile((String)Ajde.getDefault().getBuildConfigManager().getAllBuildConfigFiles().get(0));
            }

            jbInit();
            fixButtonBorders();
            views_splitPane.add(masterView, JSplitPane.TOP);
            views_splitPane.add(slaveView, JSplitPane.BOTTOM);
            setSlaveViewVisible(false);

            nav_toolBar.remove(joinpointProbe_button);
        } catch(Exception e) {
        	Message msg = new Message("Could not initialize GUI.",IMessage.ERROR,e,null);
        	Ajde.getDefault().getMessageHandler().handleMessage(msg);

        }
    }

    public void setSlaveViewVisible(boolean visible) {
        slaveViewVisible = visible;
        if (visible) {
            views_splitPane.add(slaveView, JSplitPane.BOTTOM);
            views_splitPane.setDividerLocation(this.getHeight()-250);
            //masterView.scrollToHighlightedNode();
        } else {
            views_splitPane.remove(slaveView);
            views_splitPane.setDividerLocation(this.getHeight());
        }
    }

    public boolean isSlaveViewVisible() {
        return slaveViewVisible;
    }

    public void updateConfigs(java.util.List configsList) {
        configs_comboBox.removeAllItems();
		for (Object o : configsList) {
			configs_comboBox.addItem(o);
		}
    }

    public void setSelectedConfig(String config) {
        for (int i = 0; i < configs_comboBox.getItemCount(); i++) {
            if (configs_comboBox.getItemAt(i).equals(config)) {
                configs_comboBox.setSelectedIndex(i);
            }
        }
    }

    public String getSelectedConfig() {
        return (String)configs_comboBox.getSelectedItem();
    }

    /**
     * @todo    get rid of this method and make the GUI-designer generated code work properly
     */
    private void fixButtonBorders() {
        back_button.setBorder(BorderFactory.createEmptyBorder());
        forward_button.setBorder(BorderFactory.createEmptyBorder());
        zoomToFile_button.setBorder(BorderFactory.createEmptyBorder());
        splitView_button.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 0, Color.blue));
    }

    private void jbInit() throws Exception {
        default_border = BorderFactory.createEmptyBorder();
        this.setLayout(borderLayout1);
        toolBar_panel.setLayout(borderLayout2);
        toolBar_panel.setBorder(BorderFactory.createEtchedBorder());
        config_toolBar.setBorder(default_border);
        config_toolBar.setFloatable(false);
        configs_comboBox.setPreferredSize(new Dimension(200, 20));
        configs_comboBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                configs_comboBox_actionPerformed(e);
            }
        });
        configs_comboBox.setMinimumSize(new Dimension(40, 20));
        configs_comboBox.setFont(new java.awt.Font("SansSerif", 0, 11));
        mainToolBar_panel.setLayout(borderLayout3);
        nav_toolBar.setFloatable(false);
        nav_toolBar.setBorder(default_border);
        forward_button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                forward_button_actionPerformed(e);
            }
        });
        forward_button.setIcon(icons.getForwardIcon());
        forward_button.setToolTipText("Navigate forward");
        forward_button.setPreferredSize(new Dimension(20, 20));
        forward_button.setMinimumSize(new Dimension(20, 20));
        forward_button.setBorder(default_border);
        forward_button.setMaximumSize(new Dimension(24, 20));
        back_button.setMaximumSize(new Dimension(24, 20));
        back_button.setBorder(default_border);
        back_button.setMinimumSize(new Dimension(20, 20));
        back_button.setPreferredSize(new Dimension(20, 20));
        back_button.setToolTipText("Navigate back");
        back_button.setIcon(icons.getBackIcon());
        back_button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                back_button_actionPerformed(e);
            }
        });
//        structureViews_box.add(comment_editorPane, null);
        views_splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        views_splitPane.setDividerSize(2);
        command_toolBar.setBorder(default_border);
        command_toolBar.setFloatable(false);
        splitView_button.setFont(new java.awt.Font("Dialog", 0, 11));
        splitView_button.setBorder(default_border);
        splitView_button.setMaximumSize(new Dimension(24, 24));
        splitView_button.setPreferredSize(new Dimension(20, 20));
        splitView_button.setToolTipText("Togge split-tree view mode");
        splitView_button.setIcon(icons.getSplitStructureViewIcon());
        splitView_button.setSelectedIcon(icons.getMergeStructureViewIcon());
        splitView_button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //splitView_button_actionPerformed(e);
            }
        });
        zoomToFile_button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //zoomToFile_button_actionPerformed(e);
            }
        });
        zoomToFile_button.setIcon(icons.getZoomStructureToFileModeIcon());
        zoomToFile_button.setSelectedIcon(icons.getZoomStructureToGlobalModeIcon());
        zoomToFile_button.setBorder(BorderFactory.createRaisedBevelBorder());
        zoomToFile_button.setMaximumSize(new Dimension(24, 24));
        zoomToFile_button.setPreferredSize(new Dimension(20, 20));
        zoomToFile_button.setToolTipText("Toggle file-view mode");
        zoomToFile_button.setFont(new java.awt.Font("Dialog", 0, 11));
        joinpointProbe_button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                joinpointProbe_button_actionPerformed(e);
            }
        });
        joinpointProbe_button.setIcon(icons.getStructureSwingIcon(IProgramElement.Kind.POINTCUT));
        joinpointProbe_button.setToolTipText("Create joinpoint probe");
        joinpointProbe_button.setPreferredSize(new Dimension(20, 20));
        joinpointProbe_button.setMinimumSize(new Dimension(20, 20));
        joinpointProbe_button.setBorder(default_border);
        joinpointProbe_button.setMaximumSize(new Dimension(24, 20));
        this.add(toolBar_panel,  BorderLayout.NORTH);
        toolBar_panel.add(mainToolBar_panel, BorderLayout.NORTH);
        mainToolBar_panel.add(config_toolBar, BorderLayout.CENTER);
        config_toolBar.add(configs_comboBox, null);
        mainToolBar_panel.add(nav_toolBar,  BorderLayout.EAST);
        nav_toolBar.add(splitView_button, null);
        nav_toolBar.add(zoomToFile_button, null);
        nav_toolBar.add(joinpointProbe_button, null);
        nav_toolBar.add(back_button, null);
        nav_toolBar.add(forward_button, null);
        mainToolBar_panel.add(command_toolBar,  BorderLayout.WEST);
        this.add(views_splitPane,  BorderLayout.CENTER);
        views_splitPane.setDividerLocation(400);
    }

    void forward_button_actionPerformed(ActionEvent e) {
        //AjdeUIManager.getDefault().getViewManager().navigateForwardAction();
    }
    void back_button_actionPerformed(ActionEvent e) {
        //AjdeUIManager.getDefault().getViewManager().navigateBackAction();
    }

//    void splitView_button_actionPerformed(ActionEvent e) {
//        AjdeUIManager.getDefault().getViewManager().setSplitViewMode(!slaveViewVisible);
//    }

    static class ConfigsCellRenderer extends JLabel implements ListCellRenderer {

    		private static final long serialVersionUID = 8795959045339903340L;

		public ConfigsCellRenderer() {
            setOpaque(true);
        }

        public Component getListCellRendererComponent(JList list,
                                                        Object value,
                                                        int index,
                                                        boolean isSelected,
                                                        boolean cellHasFocus) {
            if (value == null) return this;

            java.io.File file = new File(value.toString());
            setText(file.getName());
            setBackground(isSelected ? Color.gray : Color.lightGray);
//            setForeground(isSelected ? Color.lightGray : Color.gray);
            return this;
        }
    }

    void configDesigner_button_mouseClicked(MouseEvent e) {

    }
    void configDesigner_button_mousePressed(MouseEvent e) {

    }
    void configDesigner_button_mouseReleased(MouseEvent e) {

    }
    void configDesigner_button_mouseEntered(MouseEvent e) {

    }
    void configDesigner_button_mouseExited(MouseEvent e) {

    }
    void configDesigner_button_actionPerformed(ActionEvent e) {

    }
    void viewManager_button_mouseClicked(MouseEvent e) {

    }
    void viewManager_button_mousePressed(MouseEvent e) {

    }
    void viewManager_button_mouseReleased(MouseEvent e) {

    }
    void viewManager_button_mouseEntered(MouseEvent e) {

    }
    void viewManager_button_mouseExited(MouseEvent e) {

    }
    void viewManager_button_actionPerformed(ActionEvent e) {

    }

//    void zoomToFile_button_actionPerformed(ActionEvent e) {
//        AjdeUIManager.getDefault().getViewManager().setGlobalMode(!AjdeUIManager.getDefault().getViewManager().isGlobalMode());
//        AjdeUIManager.getDefault().getViewManager().updateView();
//    }

    void configs_comboBox_actionPerformed(ActionEvent e) {
        if (configs_comboBox.getSelectedItem() != null) {
            if (!configs_comboBox.getSelectedItem().toString().equals(lastSelectedConfig)) {
                //TopManager.INSTANCE.VIEW_MANAGER.readStructureView();
                lastSelectedConfig = configs_comboBox.getSelectedItem().toString();
                Ajde.getDefault().getBuildConfigManager().setActiveConfigFile(lastSelectedConfig);
            }
        }
    }

    private void joinpointProbe_button_actionPerformed(ActionEvent e) {
        //joinpointProbeWizard();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy