blob: 25bdb456e1cb6e53d3c54e82eb4b4d4acd829588 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 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 org.eclipse.wst.ws.internal.explorer.platform.constants.*;
import org.eclipse.wst.ws.internal.explorer.platform.engine.transformer.CurrentNodeSelectionTransformer;
import org.eclipse.wst.ws.internal.explorer.platform.engine.transformer.ITransformer;
import org.eclipse.wst.ws.internal.explorer.platform.perspective.*;
import javax.servlet.http.*;
public abstract class SelectNodeToolAction extends SelectNodeAction
{
protected NodeManager nodeManager_;
protected Tool selectedTool_;
public SelectNodeToolAction(Controller controller,NodeManager nodeManager)
{
super(controller,nodeManager);
nodeManager_ = nodeManager;
selectedTool_ = null;
}
public final NodeManager getNodeManager()
{
return nodeManager_;
}
// ...jsp?nodeId=...&toolId=...<&viewId=...&viewToolId=...><&isHistory=1>
protected boolean processLinkParameters(HttpServletRequest request)
{
boolean result = super.processLinkParameters(request);
String toolIdString = request.getParameter(ActionInputs.TOOLID);
String viewIdString = request.getParameter(ActionInputs.VIEWID);
String viewToolIdString = request.getParameter(ActionInputs.VIEWTOOLID);
// Perform data validation.
try
{
int toolId = Integer.parseInt(toolIdString);
}
catch (NumberFormatException e)
{
// Validation failed.
return false;
}
propertyTable_.put(ActionInputs.TOOLID,toolIdString);
// Optional properties
try
{
int viewId = Integer.parseInt(viewIdString);
propertyTable_.put(ActionInputs.VIEWID,viewIdString);
if (viewId != ActionInputs.VIEWID_DEFAULT)
{
int viewToolId = Integer.parseInt(viewToolIdString);
propertyTable_.put(ActionInputs.VIEWTOOLID,viewToolIdString);
}
}
catch (NumberFormatException e)
{
}
return result;
}
public boolean run()
{
int nodeId = Integer.parseInt((String)propertyTable_.get(ActionInputs.NODEID));
if (!isStaleNode(nodeId))
{
// Ensure that the node is visible.
makeNodeVisible(nodeManager_.getNode(nodeId));
setSelectedNodeId(nodeId);
selectedNode_ = nodeManager_.getSelectedNode();
int toolId = Integer.parseInt((String)propertyTable_.get(ActionInputs.TOOLID));
ToolManager toolManager = selectedNode_.getToolManager();
toolManager.setSelectedToolId(toolId);
selectedTool_ = toolManager.getSelectedTool();
String viewIdString = ((String)propertyTable_.get(ActionInputs.VIEWID));
if (viewIdString != null)
{
int viewId = Integer.parseInt(viewIdString);
setSelectedViewId(viewId);
if (viewId != ActionInputs.VIEWID_DEFAULT)
{
String viewToolIdString = ((String)propertyTable_.get(ActionInputs.VIEWTOOLID));
ViewTool viewTool = (ViewTool)selectedTool_;
if (viewToolIdString != null)
{
int viewToolId = Integer.parseInt(viewToolIdString);
ToolManager viewToolManager = selectedNode_.getViewToolManager();
if (viewToolManager == null)
{
if (!isHistoryAction())
{
viewToolManager = viewTool.createToolManager(viewId);
viewToolId = viewToolManager.getSelectedToolId();
}
else
{
setStaleBreadCrumb();
return false;
}
}
viewToolManager.setSelectedToolId(viewToolId);
}
}
}
else
setSelectedViewId(ActionInputs.VIEWID_DEFAULT);
addToHistory(getPerspectiveId(),getActionLinkForHistory());
return true;
}
setStaleBreadCrumb();
return false;
}
public ITransformer[] getTransformers()
{
return new ITransformer[] {new CurrentNodeSelectionTransformer(controller_)};
}
public final Tool getSelectedViewTool()
{
if (propertyTable_.get(ActionInputs.VIEWID) != null)
return selectedNode_.getViewToolManager().getSelectedTool();
return null;
}
public final Tool getSelectedTool()
{
return selectedTool_;
}
// Selecting a node tool updates the properties content. Also, in the event
// of a history switch, nodes may need to be selected resulting in changes to
// both the treeview content and the properties container. These requirements are
// covered through the base class.
public abstract String getPropertiesContentVar();
public abstract String getPropertiesContentPage();
public String getStatusContentVar()
{
return null;
}
public String getStatusContentPage()
{
return null;
}
public abstract int getPerspectiveId();
}