📄 projectionstacktool.java
字号:
// **********************************************************************//// <copyright>//// BBN Technologies, a Verizon Company// 10 Moulton Street// Cambridge, MA 02138// (617) 873-8000//// Copyright (C) BBNT Solutions LLC. All rights reserved.//// </copyright>// **********************************************************************//// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/gui/ProjectionStackTool.java,v $// $RCSfile: ProjectionStackTool.java,v $// $Revision: 1.2.2.3 $// $Date: 2005/08/09 17:59:30 $// $Author: dietrick $//// **********************************************************************package com.bbn.openmap.gui;import java.awt.Insets;import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.ImageIcon;import javax.swing.JButton;import com.bbn.openmap.proj.ProjectionStack;import com.bbn.openmap.proj.ProjectionStackTrigger;import com.bbn.openmap.util.Debug;/** * The ProjectionStackTool contains buttons that can trigger a * ProjectionStack to change a projection of a MapBean to a previous * projection, or to a later projection if the active projection is in * the middle of the stack. The OpenMap ProjectionStack will look for * one of these, and connect itself to it if it finds one. */public class ProjectionStackTool extends OMToolComponent implements ProjectionStackTrigger { protected Vector listeners; protected JButton backButton; protected JButton forwardButton; // protected JButton clearButton; protected static transient String backName = "backproj.gif"; protected static transient String forwardName = "forwardproj.gif"; protected static transient String dimBackName = "dimbackproj.gif"; protected static transient String dimForwardName = "dimforwardproj.gif"; protected boolean dimBackButton = true; protected boolean dimForwardButton = true; ImageIcon backIcon; ImageIcon dimBackIcon; ImageIcon forwardIcon; ImageIcon dimForwardIcon; public ProjectionStackTool() { super(); setKey("projectionstacktool"); resetButtons(!dimBackButton, !dimForwardButton); add(backButton); add(forwardButton); // add(clearButton); } /** * Add an ActionListener for events that trigger events to shift * the Projection stack. If you are hooking up a ProjectionStack, * you don't need to call this. The ProjectionStack will call this * when you can addProjectionStackTrigger on it. */ public void addActionListener(ActionListener al) { if (backButton != null && forwardButton != null) { backButton.addActionListener(al); forwardButton.addActionListener(al); // clearButton.addActionListener(al); } else { if (listeners == null) { listeners = new Vector(); } listeners.add(al); } } /** * Remove an ActionListener that receives events that trigger * events to shift the Projection stack. If you are hooking up a * ProjectionStack, you don't need to call this. The * ProjectionStack will call this when you can * removeProjectionStackTrigger on it. */ public void removeActionListener(ActionListener al) { if (backButton != null && forwardButton != null) { backButton.removeActionListener(al); forwardButton.removeActionListener(al); // clearButton.removeActionListener(al); } else if (listeners != null) { listeners.remove(al); } } /** * To receive a status to let the trigger know if any projections * in the forward or backward stacks exist, possibly to disable * any gui widgets. * * @param containsBackProjections there is at least one past * projection in the back cache. * @param containsForwardProjections there is at least one future * projection in the forward cache. Used when a past * projection is being used. */ public void updateProjectionStackStatus(boolean containsBackProjections, boolean containsForwardProjections) { dimBackButton = !containsBackProjections; dimForwardButton = !containsForwardProjections; resetButtons(containsBackProjections, containsForwardProjections); } public void resetButtons(boolean enableBackButton, boolean enableForwardButton) { if (backIcon == null) { backIcon = new ImageIcon(getClass().getResource(backName)); } if (dimBackIcon == null) { dimBackIcon = new ImageIcon(getClass().getResource(dimBackName)); } if (forwardIcon == null) { forwardIcon = new ImageIcon(getClass().getResource(forwardName)); } if (dimForwardIcon == null) { dimForwardIcon = new ImageIcon(getClass().getResource(dimForwardName)); } ImageIcon active; String toolTip; String disabled = " (" + i18n.get(ProjectionStackTool.class, "disabled", "disabled") + ")"; int size; toolTip = i18n.get(ProjectionStackTool.class, "backTip", "Go back to previous projection"); if (enableBackButton) { active = backIcon; } else { active = dimBackIcon; toolTip += " " + disabled; } if (backButton == null) { backButton = new JButton(active); backButton.setMargin(new Insets(0, 0, 0, 0)); backButton.setBorderPainted(false); backButton.setActionCommand(ProjectionStack.BackProjCmd); if (listeners != null) { size = listeners.size(); for (int i = 0; i < size; i++) { backButton.addActionListener((ActionListener) listeners.elementAt(i)); } } } else { backButton.setIcon(active); } backButton.setToolTipText(toolTip); toolTip = i18n.get(ProjectionStackTool.class, "forwardTip", "Go forward to next projection"); if (enableForwardButton) { active = forwardIcon; } else { active = dimForwardIcon; toolTip += " " + disabled; } if (forwardButton == null) { forwardButton = new JButton(active); forwardButton.setMargin(new Insets(0, 0, 0, 0)); forwardButton.setBorderPainted(false); forwardButton.setActionCommand(ProjectionStack.ForwardProjCmd); if (listeners != null) { size = listeners.size(); for (int i = 0; i < size; i++) { forwardButton.addActionListener((ActionListener) listeners.elementAt(i)); } } } else { forwardButton.setIcon(active); } forwardButton.setToolTipText(toolTip); // if (clearButton == null) { // clearButton = new JButton("Clear Stack"); // clearButton.setMargin(new Insets(0,0,0,0)); // clearButton.setBorderPainted(false); // clearButton.setActionCommand(ProjectionStack.ClearStacksCmd); // if (listeners != null) { // size = listeners.size(); // for (int i = 0; i < size; i++) { // clearButton.addActionListener((ActionListener)listeners.elementAt(i)); // } // } // } } public void findAndInit(Object someObj) { if (someObj instanceof ProjectionStack) { Debug.message("projectionstacktrigger", "ProjectionStackTrigger adding a ProjectionStack"); ((ProjectionStack) someObj).addProjectionStackTrigger(this); } } public void findAndUndo(Object someObj) { if (someObj instanceof ProjectionStack) { Debug.message("projectionstacktrigger", "ProjectionStackTrigger removing a ProjectionStack"); ((ProjectionStack) someObj).removeProjectionStackTrigger(this); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -