/*
*
* Perforce/JBuilder Opentool
* Copyright (C) 2001 David Freels
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.dafreels.opentools.actions;
//JBuilder
import com.borland.primetime.*;
import com.borland.primetime.actions.*;
import com.borland.primetime.node.*;
import com.borland.primetime.vfs.*;
import com.borland.jbuilder.*;
import com.borland.primetime.ide.*;
import com.borland.jbuilder.node.*;
//Java
import javax.swing.*;
import java.awt.event.*;
import java.io.File;
//JBuilder OT
import com.dafreels.opentools.*;
import com.dafreels.opentools.properties.*;
//Perforce VCS
import com.dafreels.vcs.command.*;
import com.dafreels.vcs.util.ExtensionRegistry;
import com.dafreels.vcs.util.ActionImages;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company: DF Systems
* @author David Freels
* @version 1.0
*/
public class SyncAction extends PerforceAction
{
public SyncAction(boolean onFileTabMenu)
{
super("Sync to head Revision","Sync client file(s) to Depot head revision",
ActionImages.P4_SYNC,onFileTabMenu);
}
protected SyncAction(String text, String toolTip, Icon icon, boolean onFileTabMenu)
{
super(text, toolTip, icon, onFileTabMenu);
}
public void actionPerformed(Browser browser)
{
//Get a list of the selected nodes
Node[] nodes;
com.dafreels.vcs.command.Command cmd = new com.dafreels.vcs.command.Command(getCommand());
if ( m_onFileTabMenu )
{
nodes = getSelectedNodes(browser, cmd);
}
else
{
nodes = browser.getProjectView().getSelectedNodes(browser.getActiveProject());
String tempFileName = "";
for(int i = 0; i < nodes.length; i++)
{
//See if this is a directory or auto source package
if(nodes[i].getDisplayName() != null && !nodes[i].getDisplayName().endsWith(".java"))
{
JBProject project = (JBProject)nodes[i].getProject();
Url[] sourcePaths = project.getPaths().getSourcePath();
String packagePath;
for (int u = 0; u < sourcePaths.length; u++ )
{
//Url defaultSourcePath = project.getPaths().getDefaultSourcePath();
packagePath = sourcePaths[u].getFileObject().getAbsolutePath()
+ File.separator + nodes[i].getDisplayName().replace('.', File.separatorChar);
File f = new File(packagePath);
if ( !f.exists() || !f.isDirectory() )
{
continue;
}
try
{
packagePath = f.getCanonicalPath();
} catch(java.io.IOException ioe)
{
}
cmd.addPath(packagePath+"...");
}
} else
{
tempFileName = ((FileNode)nodes[i]).getLongDisplayName();
if(m_reg.validateFile(tempFileName))
{
cmd.addPath(tempFileName);
}
}
}
}
if ( cmd.getPathCount() == 0 )
{
return;
}
runCommand(browser, cmd);
//Run the command
/*
CommandTool.runCommand(cmd, Main.m_props);
//Output the p4 messages
MessageWriter.outputErrorMessages(MessageFormatter.getInstance());
if ( Main.m_props.showOutput() )
{
MessageWriter.outputMessages(MessageFormatter.getInstance());
}
*/
//Force JBuilder to check the file status
if ( nodes != null )
{
Main.refreshNodes(nodes);
}
}
protected String getCommand()
{
return com.dafreels.vcs.command.Command.SYNC;
}
}