package org.openswing.swing.mdi.java;
import javax.swing.tree.*;
import javax.swing.KeyStroke;
/**
* <p>Title: OpenSwing Framework</p>
* <p>Description: the tree/menubar item (of the MDI Frame).
* The server side must return a DefaultTreeModel that MUST contains ApplicationFunction objects.
* </p>
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
*
* <p> This file is part of OpenSwing Framework.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the (LGPL) Lesser General Public
* License as published by the Free Software Foundation;
*
* GNU LESSER GENERAL PUBLIC LICENSE
* Version 2.1, February 1999
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* The author may be contacted at:
* maurocarniel@tin.it</p>
*
* @author Mauro Carniel
* @version 1.0
*/
public class ApplicationFunction extends DefaultMutableTreeNode {
/** function identifier */
private String functionId;
/** image name */
private String iconName;
/** method name in ClientFacade to execute */
private String methodName;
/** this node is a folder */
private boolean isFolder;
/** node description */
private String description;
/** this node is a separator */
private boolean isSeparator;
/** tooltip text associated to folder or function */
private String tooltipText;
/** shortcut to use in order to select this function in the menu bar; if not setted, the shortcut is automatically defined by MDIFrame */
private Character shortCut;
/** accelerator to use in order to select this function in the menu bar; example for CTRL+X: <code>KeyStroke.getKeyStroke('X',Event.CTRL_MASK)</code> */
private KeyStroke accelerator;
/**
* Root node.
*/
public ApplicationFunction() {
super();
}
/**
* Root node or separator.
* @param isSeparator <code>true</code> to set a separator, <code>false</code> to define a root node
*/
public ApplicationFunction(boolean isSeparator) {
super();
this.isSeparator = isSeparator;
}
/**
* Constructor: a folder
* @param nodeName description (already translated) to view in the tree node/menu item
* @param iconName image name
*/
public ApplicationFunction(String nodeName,String iconName) {
super(nodeName);
this.description = nodeName;
this.iconName = iconName;
this.tooltipText = nodeName;
isFolder = true;
}
/**
* Constructor: a folder
* @param nodeName description (already translated) to view in the tree node/menu item
* @param iconName image name
* @param tooltipText tooltip text (already translated) to view in the tree node/menu item
*/
public ApplicationFunction(String nodeName,String iconName,String tooltipText) {
this(nodeName,iconName);
this.tooltipText = tooltipText;
}
/**
* Constructor: a node function
* @param nodeName description (already translated) to view in the tree node/menu item
* @param functionId function identifier
* @param iconName image name
* @param methodName method name in ClientFacade to execute
*/
public ApplicationFunction(String nodeName,String functionId,String iconName,String methodName) {
super(nodeName);
this.description = nodeName;
this.functionId = functionId;
this.iconName = iconName;
this.methodName = methodName;
this.tooltipText = nodeName;
isFolder = false;
}
/**
* Constructor: a node function
* @param nodeName description (already translated) to view in the tree node/menu item
* @param functionId function identifier
* @param iconName image name
* @param methodName method name in ClientFacade to execute
*/
public ApplicationFunction(String nodeName,String functionId,String iconName,String methodName,String tooltipText) {
this(nodeName,functionId,iconName,methodName);
this.tooltipText = tooltipText;
}
/**
* @return function identifier
*/
public final String getFunctionId() {
return functionId;
}
/**
* @return image icon
*/
public final String getIconName() {
return iconName;
}
/**
* @return method name in ClientFacade to execute
*/
public final String getMethodName() {
return methodName;
}
/**
* @return this node is a folder
*/
public final boolean isFolder() {
return isFolder;
}
/**
* @return node description
*/
public final String getDescription() {
return this.toString();
}
/**
* Set node description.
*/
public final void setDescription(String description) {
this.description = description;
}
public String toString() {
return description;
}
/**
* @return this node is a separator
*/
public final boolean isSeparator() {
return isSeparator;
}
/**
* @return tooltip text associated to folder or function
*/
public final String getTooltipText() {
return tooltipText;
}
/**
* @return shortcut to use in order to select this function in the menu bar; if not setted, the shortcut is automatically defined by MDIFrame
*/
public Character getShortCut() {
return shortCut;
}
/**
* Set the shortcut to use in order to select this function in the menu bar; if not setted, the shortcut is automatically defined by MDIFrame.
* @param shortCut shortcut to use in order to select this function in the menu bar
*/
public final void setShortCut(Character shortCut) {
this.shortCut = shortCut;
}
/**
* @return accelerator to use in order to select this function in the menu bar
*/
public final KeyStroke getAccelerator() {
return accelerator;
}
/**
* Set the accelerator to use in order to select this function in the menu bar.
* Example for CTRL+X:
* <code>KeyStroke.getKeyStroke('X',Event.CTRL_MASK)</code>
* @param accelerator accelerator to use in order to select this function in the menu bar
*/
public final void setAccelerator(KeyStroke accelerator) {
this.accelerator = accelerator;
}
}