📄 atask.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.apps;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.compiere.util.*;
import org.compiere.plaf.*;
/**
* Application Task
*
* @author Jorg Janke
* @version $Id: ATask.java,v 1.3 2002/08/12 01:55:13 danb Exp $
*/
public class ATask extends JFrame implements ActionListener
{
/**
* Start Application Task
* @param title
* @param command
*/
static public void start (final String title, final String command)
{
new Thread()
{
public void run()
{
new ATask(title, command);
}
}.start();
} // start
/*************************************************************************/
/** @todo Write to process (currently just reads) */
/**
* IDE Constructor.
* You need to set the Title and call executeCommand manually
*/
public ATask()
{
this("","");
} // ATask
/**
* Full Constructor
* @param title
* @param command
*/
public ATask (String title, String command)
{
super (title);
Log.trace(Log.l1_User, "ATask", title + " - " + command);
try
{
jbInit();
}
catch(Exception e)
{
Log.error("ATask",e);
}
AEnv.showCenterScreen(this);
executeCommand (command);
} // ATask
private Task m_task = null;
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
private JScrollPane infoScrollPane = new JScrollPane();
private JTextArea info = new JTextArea();
/**
* Static Layout
* @throws Exception
*/
private void jbInit() throws Exception
{
CompiereColor.setBackground(this);
info.setEditable(false);
info.setBackground(CompierePLAF.getFieldBackground_Inactive());
infoScrollPane.getViewport().add(info, null);
infoScrollPane.setPreferredSize(new Dimension(500,300));
this.getContentPane().add(infoScrollPane, BorderLayout.CENTER);
this.getContentPane().add(confirmPanel, BorderLayout.SOUTH);
//
confirmPanel.addActionListener(this);
confirmPanel.getOKButton().setEnabled(false);
} // jbInit
/**
* Execute Command
* @param command
*/
public void executeCommand (String command)
{
String cmd = Msg.parseTranslation(Env.getCtx(), command);
Log.trace(Log.l3_Util, "ATask.executeCommand", cmd);
if (command == null || command.equals(""))
return;
if (m_task != null && m_task.isAlive())
m_task.interrupt();
m_task = new Task(cmd);
m_task.start();
while (true)
{
// Give it a bit of time
try
{
Thread.sleep(500);
}
catch (InterruptedException ioe)
{
Log.error("ATask.executeCommand", ioe);
}
// Info to user
StringBuffer sb = new StringBuffer();
sb.append(m_task.getOut()).append("\n-------\n")
.append(m_task.getErr()).append("\n-------");
info.setText(sb.toString());
// Are we done?
if (!m_task.isAlive())
{
confirmPanel.getCancelButton().setEnabled(false);
confirmPanel.getOKButton().setEnabled(true);
break;
}
}
Log.trace(Log.l3_Util, "ATask.executeCommand - done");
} // executeCommand
/**
* Action Listener
* @param e
*/
public void actionPerformed (ActionEvent e)
{
if (m_task != null && m_task.isAlive())
m_task.interrupt();
dispose();
} // actionPerformed
} // ATask
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -