/*
*
* Perforce/JBuilder Opentool
* Copyright (C) 2002 Mark Ackerman
*
* 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.jbuilder.*;
import com.borland.primetime.ide.*;
//Java
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
//JBuilder OT
import com.dafreels.opentools.*;
import com.dafreels.opentools.actions.ui.*;
import com.dafreels.opentools.properties.*;
//Perforce OT
import com.dafreels.vcs.command.*;
import com.dafreels.vcs.util.ExtensionRegistry;
import com.dafreels.vcs.util.ActionImages;
/**
* Title: Perforce Open tool
* Description: open and lock a file in Perforce
* Copyright: Copyright (c) 2002
* Company:
* @author Mark Ackerman
* @version 1.0
*/
public class LockAction extends PerforceAction
{
public LockAction(boolean onFileTabMenu)
{
super("Lock","Open and Lock file(s) at Depot",ActionImages.P4_LOCK, onFileTabMenu);
}
public void actionPerformed(Browser browser)
{
String changeList = null;
com.dafreels.vcs.command.Command cmd =
new com.dafreels.vcs.command.Command(com.dafreels.vcs.command.Command.LOCK);
Node[] nodes = getSelectedNodes(browser, cmd);
if ( cmd.getPathCount() == 0 )
{
return;
}
if ( Main.m_props.askForEditChangeList() )
{
AddFilesDialog dialog = new AddFilesDialog(browser, true);
dialog.setTitle("Choose ChangeList");
dialog.fillForm(cmd.getPaths());
dialog.setVisible(true);
if ( dialog.wasCanceled() )
{
return;
}
changeList = dialog.getChangelist();
/*
if ( changeList != null )
{
com.dafreels.vcs.command.Command cmd2 =
new com.dafreels.vcs.command.Command(com.dafreels.vcs.command.Command.ADD);
cmd2.addPath("-c "+changeList);
cmd2.addPaths(dialog.getFiles());
cmd = cmd2;
}
*/
}
//Get a list of the selected nodes
new EditAction(m_onFileTabMenu).editFile(browser, changeList);
if ( changeList != null )
{
com.dafreels.vcs.command.Command cmd2 =
new com.dafreels.vcs.command.Command(com.dafreels.vcs.command.Command.LOCK);
cmd2.addPath("-c "+changeList);
cmd2.addPaths(cmd.getPaths());
cmd = cmd2;
}
runCommand(browser, cmd, true);
//Refresh the nodes
if ( nodes != null )
{
Main.refreshNodes(nodes);
}
}
protected boolean outputMessages(boolean outputExtraLines)
{
boolean success = MessageFormatter.getInstance().getErrorMessageCount() == 0;
MessageWriter.outputErrorMessages(MessageFormatter.getInstance());
if ( Main.m_props.showOutput() )
{//Output the p4 messages
MessageWriter.outputMessages(MessageFormatter.getInstance());
}
else
{
String message = "";
Message msg;
while( (message = MessageFormatter.getNextMessage()) != null)
{
if ( message.indexOf("already locked by") > -1 )
{
msg = new Message(message);
msg.setForeground(java.awt.Color.red);
Browser.getActiveBrowser().getMessageView().addMessage(Main.PERFORCEMESSAGES,
msg);
}
}
}
return success;
}
}