diff options
Diffstat (limited to 'core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java')
-rw-r--r-- | core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java b/core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java new file mode 100644 index 000000000..cb44a618f --- /dev/null +++ b/core/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java @@ -0,0 +1,132 @@ +/******************************************************************************* + * Copyright (c) 2001, 2006 IBM Corporation and others. + * 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package org.eclipse.wst.ws.internal.explorer.platform.actions; + +import javax.servlet.http.HttpServletRequest; +import org.eclipse.wst.ws.internal.explorer.platform.constants.ActionInputs; +import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller; +import org.eclipse.wst.ws.internal.explorer.platform.perspective.Node; +import org.eclipse.wst.ws.internal.explorer.platform.perspective.NodeManager; + +public abstract class NodeAction extends LinkAction +{ + protected NodeManager nodeManager_; + private boolean requiresTreeViewRefresh_; + private boolean requiresNodeSelection_; + private boolean requiresViewSelection_; + private boolean requiresStatusUpdate_; + + public NodeAction(Controller controller,NodeManager nodeManager) + { + super(controller); + nodeManager_ = nodeManager; + requiresTreeViewRefresh_ = false; + requiresNodeSelection_ = false; + requiresViewSelection_ = false; + requiresStatusUpdate_ = false; + } + + // ...jsp?nodeId=...<&isHistory=1> + protected boolean processLinkParameters(HttpServletRequest request) + { + String nodeIdString = request.getParameter(ActionInputs.NODEID); + // Perform data validation. + try + { + Integer.parseInt(nodeIdString); + } + catch (NumberFormatException e) + { + // Validation failed! + return false; + } + propertyTable_.put(ActionInputs.NODEID,nodeIdString); + return true; + } + + protected final boolean isStaleNode(int nodeId) + { + return (nodeManager_.getNode(nodeId) == null); + } + + /** + * Make a node visible. A node is visible when all of its ancestors are expanded. + * @param Node The node to be made visible. + * @return boolean Indicator for whether or not the tree structure was changed (i.e. expanded to show the node in question). + */ + protected final boolean makeNodeVisible(Node node) + { + requiresTreeViewRefresh_ = node.getNodeManager().makeNodeVisible(node); + return requiresTreeViewRefresh_; + } + + /** + * Make a node visible. A node is visible when all of its ancestors are expanded. + * @param Node The node to be made visible. + * @return boolean Indicator for whether or not the tree structure was changed (i.e. expanded to show the node in question). + */ + public final void setTreeRefreshNeeded() + { + requiresTreeViewRefresh_ = true; + + } + + /** + * Select a node with id nodeId. + * @param int The id of the node to be selected. + */ + protected final void setSelectedNodeId(int nodeId) + { + if (nodeManager_.getSelectedNodeId() != nodeId) + { + requiresNodeSelection_ = true; + nodeManager_.setSelectedNodeId(nodeId); + } + } + + protected final void setSelectedViewId(int viewId) + { + Node selectedNode = nodeManager_.getSelectedNode(); + if (selectedNode.getViewId() != viewId) + { + requiresViewSelection_ = true; + selectedNode.setViewId(viewId); + } + } + + // Determine whether or not the treeview requires reloading as a result of this action. + // Reloading is required when branches are added/removed. + public boolean requiresTreeViewRefresh() + { + return requiresTreeViewRefresh_; + } + + // Determine whether or not a new node has been selected as a result of the action. + public boolean requiresNodeSelection() + { + return requiresNodeSelection_; + } + + // Determine if a new view element is selected. + public boolean requiresViewSelection() + { + return requiresViewSelection_; + } + + // Determine if any status messages arose from this action. + public boolean requiresStatusUpdate() + { + return requiresStatusUpdate_; + } + + protected abstract String getActionLinkForHistory(); +} |