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

org.aspectj.ajde.ui.swing.SimpleStructureViewToolPanel 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.Dimension;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;

import org.aspectj.ajde.Ajde;
import org.aspectj.ajde.ui.StructureView;
import org.aspectj.ajde.ui.StructureViewProperties;
import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IHierarchyListener;
import org.aspectj.asm.IProgramElement;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.Message;

public class SimpleStructureViewToolPanel extends JPanel {

	private static final long serialVersionUID = -7573973278642540506L;
	private final StructureView currentView;
	private final JButton separator_button = new JButton();
	private boolean hideNonAJEnabled = false;
	private boolean hideAssociationsEnabled = false;
	private boolean sortEnabled = false;

	Border border1;
	Border border2;
	JButton structureView_button = new JButton();
	JPanel label_panel = new JPanel();
	JLabel currConfig_field = new JLabel();
	JPanel spacer_panel = new JPanel();
	JPanel jPanel2 = new JPanel();
	JButton forward_button = new JButton();
	JPanel navigation_panel = new JPanel();
	JButton back_button = new JButton();
	BorderLayout borderLayout1 = new BorderLayout();
	JPanel buttons_panel = new JPanel();
	BorderLayout borderLayout2 = new BorderLayout();
	BorderLayout borderLayout3 = new BorderLayout();
	BorderLayout borderLayout4 = new BorderLayout();

	public final IHierarchyListener MODEL_LISTENER = new IHierarchyListener() {
		public void elementsUpdated(IHierarchy model) {
			String path = Ajde.getDefault().getBuildConfigManager().getActiveConfigFile();
			String fileName = "";
			if (path != null)
				fileName = new File(path).getName();
			updateCurrConfigLabel(fileName);
		}
	};

	JButton hideNonAJ_button = new JButton();
	JPanel navigation_panel1 = new JPanel();
	JButton hideAssociations_button = new JButton();
	BorderLayout borderLayout5 = new BorderLayout();
	JButton sort_button = new JButton();

	public SimpleStructureViewToolPanel(StructureView currentView) {
		this.currentView = currentView;
		Ajde.getDefault().getModel().addListener(MODEL_LISTENER);
		try {
			jbInit();
		} catch (Exception e) {
			Message msg = new Message("Could not initialize GUI.", IMessage.ERROR, e, null);
			Ajde.getDefault().getMessageHandler().handleMessage(msg);
		}
		updateCurrConfigLabel("");
	}

	private void updateCurrConfigLabel(String text) {
		currConfig_field.setText("  File View (" + text + ")");
	}

	private void jbInit() throws Exception {
		border1 = BorderFactory.createBevelBorder(BevelBorder.LOWERED, Color.white, Color.white, new Color(156, 156, 158),
				new Color(109, 109, 110));
		border2 = BorderFactory.createEmptyBorder(0, 1, 0, 0);

		separator_button.setPreferredSize(new Dimension(2, 16));
		separator_button.setMinimumSize(new Dimension(2, 16));
		separator_button.setEnabled(false);
		separator_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
		separator_button.setMaximumSize(new Dimension(2, 16));

		structureView_button.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				structureView_button_actionPerformed(e);
			}
		});
		structureView_button.setIcon(Ajde.getDefault().getIconRegistry().getStructureViewIcon());
		structureView_button.setBorder(border2);
		structureView_button.setToolTipText("Navigate back");
		structureView_button.setPreferredSize(new Dimension(20, 20));
		structureView_button.setMinimumSize(new Dimension(20, 20));
		structureView_button.setMaximumSize(new Dimension(24, 20));
		currConfig_field.setBackground(SystemColor.control);
		currConfig_field.setFont(new java.awt.Font("SansSerif", 0, 11));
		currConfig_field.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
		// currConfig_field.setEditable(false);
		currConfig_field.setText("     ");

		forward_button.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				forward_button_actionPerformed(e);
			}
		});
		forward_button.setIcon(Ajde.getDefault().getIconRegistry().getForwardIcon());
		forward_button.setToolTipText("Navigate forward");
		forward_button.setPreferredSize(new Dimension(20, 20));
		forward_button.setMinimumSize(new Dimension(20, 20));
		forward_button.setMaximumSize(new Dimension(24, 20));
		forward_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
		navigation_panel.setLayout(borderLayout1);
		back_button.setMaximumSize(new Dimension(24, 20));
		back_button.setMinimumSize(new Dimension(20, 20));
		back_button.setPreferredSize(new Dimension(20, 20));
		back_button.setToolTipText("Navigate back");
		back_button.setIcon(Ajde.getDefault().getIconRegistry().getBackIcon());
		back_button.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				back_button_actionPerformed(e);
			}
		});
		back_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
		this.setLayout(borderLayout2);
		buttons_panel.setLayout(borderLayout3);
		label_panel.setLayout(borderLayout4);
		hideNonAJ_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
		hideNonAJ_button.setMaximumSize(new Dimension(24, 20));
		hideNonAJ_button.setMinimumSize(new Dimension(20, 20));
		hideNonAJ_button.setPreferredSize(new Dimension(20, 20));
		hideNonAJ_button.setToolTipText("Hide non-AspectJ members");
		hideNonAJ_button.setIcon(Ajde.getDefault().getIconRegistry().getHideNonAJIcon());
		hideNonAJ_button.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				hideNonAJ_button_actionPerformed(e);
			}
		});
		navigation_panel1.setLayout(borderLayout5);
		hideAssociations_button.setMaximumSize(new Dimension(24, 20));
		hideAssociations_button.setMinimumSize(new Dimension(20, 20));
		hideAssociations_button.setPreferredSize(new Dimension(20, 20));
		hideAssociations_button.setToolTipText("Hide associations");
		hideAssociations_button.setIcon(Ajde.getDefault().getIconRegistry().getHideAssociationsIcon());
		hideAssociations_button.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				hideAssociations_button_actionPerformed(e);
			}
		});
		hideAssociations_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
		sort_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
		sort_button.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				sort_button_actionPerformed(e);
			}
		});
		sort_button.setIcon(Ajde.getDefault().getIconRegistry().getOrderIcon());
		sort_button.setToolTipText("Sort member");
		sort_button.setPreferredSize(new Dimension(20, 20));
		sort_button.setMinimumSize(new Dimension(20, 20));
		sort_button.setMaximumSize(new Dimension(24, 20));
		label_panel.add(currConfig_field, BorderLayout.CENTER);
		// label_panel.add(structureView_button, BorderLayout.WEST);
		this.add(spacer_panel, BorderLayout.CENTER);
		this.add(buttons_panel, BorderLayout.EAST);
		buttons_panel.add(navigation_panel, BorderLayout.CENTER);
		navigation_panel.add(back_button, BorderLayout.CENTER);
		navigation_panel.add(forward_button, BorderLayout.EAST);
		navigation_panel.add(jPanel2, BorderLayout.WEST);
		buttons_panel.add(navigation_panel1, BorderLayout.WEST);
		navigation_panel1.add(hideAssociations_button, BorderLayout.EAST);
		navigation_panel1.add(hideNonAJ_button, BorderLayout.CENTER);
		navigation_panel1.add(sort_button, BorderLayout.WEST);
		this.add(label_panel, BorderLayout.WEST);

	}

	private void forward_button_actionPerformed(ActionEvent e) {
		Ajde.getDefault().getStructureViewManager().fireNavigateForwardAction(currentView);
	}

	private void back_button_actionPerformed(ActionEvent e) {
		Ajde.getDefault().getStructureViewManager().fireNavigateBackAction(currentView);
	}

	void structureView_button_actionPerformed(ActionEvent e) {

	}

	private void hideNonAJ_button_actionPerformed(ActionEvent e) {
		if (hideNonAJEnabled) {
			hideNonAJ_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
			hideNonAJEnabled = false;
			currentView.getViewProperties().setFilteredMemberKinds(new ArrayList());
		} else {
			hideNonAJ_button.setBorder(AjdeWidgetStyles.LOWERED_BEVEL_BORDER);
			hideNonAJEnabled = true;
			currentView.getViewProperties().setFilteredMemberKinds(IProgramElement.Kind.getNonAJMemberKinds());
		}
		Ajde.getDefault().getStructureViewManager().refreshView(currentView);
	}

	private void hideAssociations_button_actionPerformed(ActionEvent e) {
		if (hideAssociationsEnabled) {
			hideAssociations_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
			hideAssociationsEnabled = false;
			currentView.getViewProperties().setRelations(Ajde.getDefault().getStructureViewManager().getAvailableRelations());
		} else {
			hideAssociations_button.setBorder(AjdeWidgetStyles.LOWERED_BEVEL_BORDER);
			hideAssociationsEnabled = true;
			currentView.getViewProperties().setRelations(new ArrayList());
		}
		Ajde.getDefault().getStructureViewManager().refreshView(currentView);
	}

	private void sort_button_actionPerformed(ActionEvent e) {
		if (sortEnabled) {
			sort_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
			sortEnabled = false;
			currentView.getViewProperties().setSorting(StructureViewProperties.Sorting.DECLARATIONAL);
		} else {
			sort_button.setBorder(AjdeWidgetStyles.LOWERED_BEVEL_BORDER);
			sortEnabled = true;
			currentView.getViewProperties().setSorting(StructureViewProperties.Sorting.ALPHABETICAL);
		}
		Ajde.getDefault().getStructureViewManager().refreshView(currentView);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy