⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atask.java

📁 Java写的ERP系统
💻 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 + -