ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gle...@apache.org
Subject cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ide default.ini VAJAntTool.java VAJAntToolGUI.java VAJBuildInfo.java
Date Fri, 12 Jan 2001 15:22:52 GMT
glennm      01/01/12 07:22:50

  Added:       src/main/org/apache/tools/ant/taskdefs/optional/ide
                        default.ini VAJAntTool.java VAJAntToolGUI.java
                        VAJBuildInfo.java
  Log:
  VAJ IDE integration classes.
  
  These should be moved to a contribution project
  when one is created.
  
  Submitted by:	Wolf Siberski
                  Christoph Wilhelms
  
  Revision  Changes    Path
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ide/default.ini
  
  Index: default.ini
  ===================================================================
  Name=Ant
  Version=0.1
  Help-Item=Ant Help,doc/VAJAntTool.html
  Menu-Items=Ant Build,org.apache.tools.ant.taskdefs.optional.ide.VAJAntTool,-P;
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntTool.java
  
  Index: VAJAntTool.java
  ===================================================================
  package org.apache.tools.ant.taskdefs.optional.ide;
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  import com.ibm.ivj.util.base.Project;
  import com.ibm.ivj.util.base.ToolData;
  import com.ibm.ivj.util.base.IvjException;
  import org.apache.tools.ant.BuildException;
  
  /**
   * This class is the equivalent to org.apache.tools.ant.Main for the
   * VAJ tool environment. It's main is called when the user selects
   * Tools->Ant Build from the VAJ project menu.
   * Additionally this class provides methods to save build info for
   * a project in the repository and load it from the repository
   *
   * @author: Wolf Siberski
   */
  public class VAJAntTool {
  	private static final String TOOL_DATA_KEY = "AntTool";
  /**
   * Loads the BuildInfo for the specified VAJ project from the
   * tool data for this project.
   * If there is no build info stored for that project, a new
   * default BuildInfo is returned
   * 
   * @return BuildInfo buildInfo build info for the specified project
   * @param projectName String project name
   */
  public static VAJBuildInfo loadBuildData(String projectName) {
  	VAJBuildInfo result = null;
  	try {
  		Project project = VAJUtil.getWorkspace().loadedProjectNamed( projectName );
  		if ( project.testToolRepositoryData(TOOL_DATA_KEY) ) {
  			ToolData td = project.getToolRepositoryData(TOOL_DATA_KEY);
  			String data = (String)td.getData();
  			result = VAJBuildInfo.parse( data );
  		} else {
  			result = new VAJBuildInfo();
  		}
  		result.setVAJProjectName( projectName );
  	} catch (Throwable t) {
  		System.out.println("BuildInfo for Project " + projectName + 
  			" could not be loaded" + t);
  		throw new BuildException(t);
  	}
  	return result;
  }
  /**
   * Starts the application.
   * @param args an array of command-line arguments
   */
  public static void main(java.lang.String[] args) {
  	VAJBuildInfo info;
  	if ( args.length >= 2 && args[1] instanceof String ) {
  		String projectName = (String)args[1];
  		info = loadBuildData( projectName );
  	} 
  	else {
  		info = new VAJBuildInfo();
  	}
  	
  	VAJAntToolGUI mainFrame = new VAJAntToolGUI( info );
  	mainFrame.show();
  }
  /**
   * Saves the BuildInfo for a project in the VAJ repository.
   * @param info BuildInfo build info to save
   */
  public static void saveBuildData(VAJBuildInfo info) {
  	String data = info.asDataString();
  	try {
  		ToolData td = new ToolData( TOOL_DATA_KEY, data );
  		VAJUtil.getWorkspace().loadedProjectNamed( info.getVAJProjectName() ).setToolRepositoryData( td );
  	} catch (Throwable t) {
  		throw new BuildException("BuildInfo for Project " + info.getVAJProjectName() + 
  			" could not be saved", t);
  	}
  }
  }
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntToolGUI.java
  
  Index: VAJAntToolGUI.java
  ===================================================================
  package org.apache.tools.ant.taskdefs.optional.ide;
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  import java.util.Vector;
  import java.awt.Frame;
  import java.awt.Dialog;
  import java.awt.Panel;
  import java.awt.MenuBar;
  import java.awt.Menu;
  import java.awt.MenuItem;
  import java.awt.Label;
  import java.awt.TextField;
  import java.awt.TextArea;
  import java.awt.List;
  import java.awt.Choice;
  import java.awt.Button;
  import java.awt.FileDialog;
  import java.awt.FlowLayout;
  import java.awt.BorderLayout;
  import java.awt.GridBagLayout;
  import java.awt.GridBagConstraints;
  import java.awt.Insets;
  import java.awt.Toolkit;
  import java.awt.Font;
  import java.awt.SystemColor;
  import java.awt.event.ActionListener;
  import java.awt.event.ItemListener;
  import java.awt.event.TextListener;
  import java.awt.event.WindowListener;
  import java.awt.event.ActionEvent;
  import java.awt.event.ItemEvent;
  import java.awt.event.TextEvent;
  import java.awt.event.WindowEvent;
  import java.beans.PropertyChangeListener;
  import org.apache.tools.ant.Main;
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.BuildListener;
  import org.apache.tools.ant.BuildEvent;
  import org.apache.tools.ant.Project;
  
  /**
   * This is a simple grafical user interface to provide the information needed by ANT and
   * to start the build-process within IBM VisualAge for Java.
   * <p>
   * I was using AWT to make it independent from the JDK-version. Please don't ask me for a Swing-version:
   * I am very familiar with Swing and I really think that it's not necessary for such a simple gui!
   * <p>
   * It is completely developed in VAJ using the visual composition editor. About 90% of the code is generated by VAJ,
   * but in fact I did a lot of <i>code-beautification</i> ;-).
   * <p>
   * @version 1.0 h
   * @author: Christoph Wilhelms, TUI Infotec GmbH
   */
  public class VAJAntToolGUI extends Frame {
  	/**
  	 * Members 
  	 */
  	private VAJBuildLogger logger = new VAJBuildLogger();
  	private String lineSeparator = "\r\n";
  	private PrivateEventHandler iEventHandler = new PrivateEventHandler();
  
  	/**
  	 * Members of the main-window
  	 */
  	// main model
  	private VAJBuildInfo iBuildInfo = null;
  	// Menue
  	private MenuBar iAntMakeMenuBar = null;
  	private Menu iFileMenu = null;
  	private MenuItem iSaveMenuItem = null;
  	private MenuItem iMenuSeparator = null;
  	private MenuItem iShowLogMenuItem = null;
  	private Menu iHelpMenu = null;
  	private MenuItem iAboutMenuItem = null;
  	// Container
  	private Panel iContentsPane = null;
  	private Panel iOptionenPanel = null;
  	private Panel iCommandButtonPanel = null;
  	private FlowLayout iCommandButtonPanelFlowLayout = null;
  	// Project name
  	private Label iProjectLabel = null;
  	private Label iProjectText = null;
  	// XML-file 
  	private Label iBuildFileLabel = null;
  	private TextField iBuildFileTextField = null;
  	private boolean iConnPtoP2Aligning = false;
  	private Button iBrowseButton = null;
  	private FileDialog iFileDialog = null;
  	// Options
  	private Choice iMessageOutputLevelChoice = null;
  	private Label iMessageOutputLevelLabel = null;
  	private Label iTargetLabel = null;
  	private List iTargetList = null;
  	// Command-buttons
  	private Button iBuildButton = null;
  	private Button iReloadButton = null;	
  	private Button iCloseButton = null;
  	/**
  	 * log-Window
  	 */
  	// Container
  	private Frame iMessageFrame = null;
  	private Panel iMessageCommandPanel = null;
  	private Panel iMessageContentPanel = null;
  	// Components
  	private TextArea iMessageTextArea = null;
  	private Button iMessageOkButton = null;
  	private Button iMessageClearLogButton = null;
  	/**
  	 * About-dialog
  	 */
  	// Container
  	private Dialog iAboutDialog = null;
  	private Panel iAboutDialogContentPanel = null;
  	private Panel iAboutInfoPanel = null;
  	private Panel iAboutCommandPanel = null;
  	// Labels
  	private Label iAboutTitleLabel = null;
  	private Label iAboutDevLabel = null;
  	private Label iAboutContactLabel = null;
  	// Buttons
  	private Button iAboutOkButton = null;
  
  	/**
  	 * This internal BuildLogger, to be honest, is just a BuildListener. 
  	 * It does nearly the same as the DefaultLogger, but uses the Loggin-Window for output.
  	 */
  	private class VAJBuildLogger implements BuildListener {
  		private long startTime = System.currentTimeMillis();
  
  		/**
  		 * VAJBuildLogger constructor comment.
  		 */
  		public VAJBuildLogger() {
  			super();
  		}
  
  		/**
  		 *  Fired after the last target has finished. This event
  		 *  will still be thrown if an error occured during the build.
  		 *
  		 *  @see BuildEvent#getException()
  		 */
  		public void buildFinished(BuildEvent event) {
  			Throwable error = event.getException();
  
  			if (error == null) {
  				getMessageTextArea().append(lineSeparator + "BUILD SUCCESSFUL");
  			}
  			else {
  				getMessageTextArea().append(lineSeparator + "BUILD FAILED" + lineSeparator);
  
  				if (error instanceof BuildException) {
  					getMessageTextArea().append(error.toString());
  
  					Throwable nested = ((BuildException)error).getException();
  					if (nested != null) {
  						nested.printStackTrace(System.err);
  					}
  				}
  				else {
  					error.printStackTrace(System.err);
  				}
  			}
  
  			getMessageTextArea().append(lineSeparator + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
  		}
  
  		/**
  		 *  Fired before any targets are started.
  		 */
  		public void buildStarted(BuildEvent event) {
  			startTime = System.currentTimeMillis();
  			getMessageTextArea().append(lineSeparator);
  		}
  
  		/**
  		 *  Fired whenever a message is logged.
  		 *
  		 *  @see BuildEvent#getMessage()
  		 *  @see BuildEvent#getPriority()
  		 */
  		public void messageLogged(BuildEvent event) {
  			if (event.getPriority() <= getBuildInfo().getOutputMessageLevel()) {
  				String msg = "";
  				if (event.getTask() != null)
  					msg = "[" + event.getTask().getTaskName() + "] ";
  				getMessageTextArea().append(lineSeparator + msg + event.getMessage());
  			}
  		}
  
  		/**
  		 *  Fired when a target has finished. This event will
  		 *  still be thrown if an error occured during the build.
  		 *
  		 *  @see BuildEvent#getException()
  		 */
  		public void targetFinished(BuildEvent event) {
  		}
  
  		/**
  		 *  Fired when a target is started.
  		 *
  		 *  @see BuildEvent#getTarget()
  		 */
  		public void targetStarted(BuildEvent event) {
  			if (getBuildInfo().getOutputMessageLevel() <= Project.MSG_INFO) {
  				getMessageTextArea().append(lineSeparator + event.getTarget().getName() + ":");
  			}
  		}
  
  		/**
  		 *  Fired when a task has finished. This event will still
  		 *  be throw if an error occured during the build.
  		 *
  		 *  @see BuildEvent#getException()
  		 */
  		public void taskFinished(BuildEvent event) {
  		}
  
  		/**
  		 *  Fired when a task is started.
  		 *
  		 *  @see BuildEvent#getTask()
  		 */
  		public void taskStarted(BuildEvent event) {
  		}
  		/**
  		 * Chris: HACK: remove when Ant-Refactoring is finished!
  		 */
  		public void buildSuccessful() {
  			getMessageTextArea().append(lineSeparator + "BUILD SUCCESSFUL");
  			getMessageTextArea().append(lineSeparator + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
  		}
  		/**
  		 * Chris: HACK: remove when Ant-Refactoring is finished!
  		 */
  		public void buildFailed(Throwable exc) {
  			getMessageTextArea().append(lineSeparator + "BUILD FAILED" + lineSeparator);
  
  			if (exc instanceof BuildException) {
  				getMessageTextArea().append(exc.toString());
  
  				Throwable nested = ((BuildException)exc).getException();
  				if (nested != null) {
  					nested.printStackTrace(System.err);
  				}
  			}
  			else {
  				exc.printStackTrace(System.err);
  			}
  			getMessageTextArea().append(lineSeparator + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
  		}
  	}
  	
  	/**
  	 * Eventhandler to handle all AWT-events
  	 */
  	private class PrivateEventHandler implements ActionListener, ItemListener, TextListener, WindowListener, PropertyChangeListener {
  		/**
  		 * ActionListener method
  		 */
  		public void actionPerformed(ActionEvent e) {
  			try {
  				/* #### Main App-Frame #### */
  				// browse XML-File with filechooser
  				if (e.getSource() == VAJAntToolGUI.this.getBrowseButton()) {
  					getFileDialog().setDirectory(getBuildFileTextField().getText().substring(0, getBuildFileTextField().getText().lastIndexOf('\\') + 1));
  					getFileDialog().setFile("*.xml");
  					getFileDialog().show();
  					if (!getFileDialog().getFile().equals("") ) {
  						getBuildFileTextField().setText(getFileDialog().getDirectory() + getFileDialog().getFile());
  					}
  				}
  				// dispose and exit application 
  				if (e.getSource() == VAJAntToolGUI.this.getCloseButton()) {
  					dispose();
  					System.exit(0);
  				}
  				// start build-process
  				if (e.getSource() == VAJAntToolGUI.this.getBuildButton()) 
  					executeTarget();
  				if (e.getSource() == VAJAntToolGUI.this.getReloadButton()) {
  					try {
  						getBuildInfo().updateTargetList();
  						fillList();
  					}
  					catch (Throwable fileNotFound) {
  						handleException(fileNotFound);
  						getTargetList().removeAll();
  						getBuildButton().setEnabled(false);
  					}
  				}
  				// MenuItems
  				if (e.getSource() == VAJAntToolGUI.this.getSaveMenuItem()) 
  					saveBuildInfo();
  				if (e.getSource() == VAJAntToolGUI.this.getAboutMenuItem()) 
  					getAboutDialog().show();
  				if (e.getSource() == VAJAntToolGUI.this.getShowLogMenuItem()) 
  					getMessageFrame().show();
  				/* #### About dialog #### */
  				if (e.getSource() == VAJAntToolGUI.this.getAboutOkButton()) 
  					getAboutDialog().dispose();
  				/* #### Log frame #### */
  				if (e.getSource() == VAJAntToolGUI.this.getMessageOkButton())
  					getMessageFrame().dispose();
  				if (e.getSource() == VAJAntToolGUI.this.getMessageClearLogButton()) 
  					getMessageTextArea().setText("");
  				if (e.getSource() == VAJAntToolGUI.this.getMessageOkButton()) 
  					getMessageFrame().dispose();
  			}
  			catch (Throwable exc) {
  				handleException(exc);
  			}
  		}
  
  		/**
  		 * ItemListener method
  		 */
  		public void itemStateChanged(ItemEvent e) {
  			try {
  				if (e.getSource() == VAJAntToolGUI.this.getTargetList()) 
  					getBuildButton().setEnabled(true);
  				if (e.getSource() == VAJAntToolGUI.this.getMessageOutputLevelChoice()) 
  					getBuildInfo().setOutputMessageLevel(getMessageOutputLevelChoice().getSelectedIndex());
  				if (e.getSource() == VAJAntToolGUI.this.getTargetList()) 
  					getBuildInfo().setTarget(getTargetList().getSelectedItem());
  			}
  			catch (Throwable exc) {
  				handleException(exc);
  			}
  		}
  		
  		/**
  		 * PropertyChangeListener method
  		 */
  		public void propertyChange(java.beans.PropertyChangeEvent evt) {
  			if (evt.getSource() == VAJAntToolGUI.this.getBuildInfo() && (evt.getPropertyName().equals("projectName"))) 
  				connectProjectNameToLabel();
  			if (evt.getSource() == VAJAntToolGUI.this.getBuildInfo() && (evt.getPropertyName().equals("buildFileName"))) 
  				connectBuildFileNameToTextField();
  		}
  		
  		/**
  		 * TextListener method
  		 */
  		public void textValueChanged(TextEvent e) {
  			if (e.getSource() == VAJAntToolGUI.this.getBuildFileTextField()) 
  				connectTextFieldToBuildFileName();
  		}
  		
  		/**
  		 * WindowListener methods
  		 */
  		public void windowClosing(WindowEvent e) {
  			try {
  				if (e.getSource() == VAJAntToolGUI.this) {
  					dispose();
  					System.exit(0);
  				}
  				if (e.getSource() == VAJAntToolGUI.this.getAboutDialog()) 
  					getAboutDialog().dispose();
  				if (e.getSource() == VAJAntToolGUI.this.getMessageFrame()) 
  					getMessageFrame().dispose();
  			}
  			catch (Throwable exc) {
  				handleException(exc);
  			}
  		}
  		public void windowActivated(WindowEvent e) {};
  		public void windowClosed(WindowEvent e) {};
  		public void windowDeactivated(WindowEvent e) {};
  		public void windowDeiconified(WindowEvent e) {};
  		public void windowIconified(WindowEvent e) {};
  		public void windowOpened(WindowEvent e) {};
  	}
  	
  	/**
  	 * AntMake default-constructor.
  	 */
  	private VAJAntToolGUI() {
  		super();
  		initialize();
  	}
  	/**
  	 * AntMake constructor called by VAJAntTool integration.
  	 * @param buildInfo VAJBuildInfo
  	 */
  	 
  	public VAJAntToolGUI(VAJBuildInfo newBuildInfo) {
  		super();
  		setBuildInfo(newBuildInfo);
  		initialize();
  	}
  	/**
  	 * This method is used to center dialogs.
  	 */
  	public static void centerDialog(Dialog dialog) {
  		dialog.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (dialog.getSize().width / 2), (java.awt.Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (dialog.getSize().height / 2));
  	}
  	/**
  	 * connectBuildFileNameToTextField:  (BuildInfo.buildFileName <--> BuildFileTextField.text)
  	 */
  	private void connectBuildFileNameToTextField() {
  		/* Set the target from the source */
  		try {
  			if (iConnPtoP2Aligning == false) {
  				iConnPtoP2Aligning = true;
  				if ((getBuildInfo() != null)) {
  					getBuildFileTextField().setText(getBuildInfo().getBuildFileName());
  				}
  				iConnPtoP2Aligning = false;
  			}
  		} catch (Throwable iExc) {
  			iConnPtoP2Aligning = false;
  			handleException(iExc);
  		}
  	}
  	/**
  	 * connectProjectNameToLabel:  (BuildInfo.vajProjectName <--> ProjectText.text)
  	 */
  	private void connectProjectNameToLabel() {
  		/* Set the target from the source */
  		try {
  			if ((getBuildInfo() != null)) {
  				getProjectText().setText(getBuildInfo().getVAJProjectName());
  			}
  		} catch (Throwable iExc) {
  			handleException(iExc);
  		}
  	}
  	/**
  	 * connectTextFieldToBuildFileName:  (BuildInfo.buildFileName <--> BuildFileTextField.text)
  	 */
  	private void connectTextFieldToBuildFileName() {
  		/* Set the source from the target */
  		try {
  			if (iConnPtoP2Aligning == false) {
  				iConnPtoP2Aligning = true;
  				if ((getBuildInfo() != null)) {
  					getBuildInfo().setBuildFileName(getBuildFileTextField().getText());
  				}
  				iConnPtoP2Aligning = false;
  			}
  		} catch (Throwable iExc) {
  			iConnPtoP2Aligning = false;
  			handleException(iExc);
  		}
  	}
  	/**
  	 * external build of a .jar-file
  	 */
  	private void executeTarget() {
  		try	{
  			getMessageFrame().show();
  			// Chris: HACK: remove when Ant-Refactoring is finished!
  			logger.buildStarted(null);
  			getBuildInfo().executeProject(logger);
  			// Chris: HACK: remove when Ant-Refactoring is finished!
  			logger.buildSuccessful();			
  		}
  		catch (Throwable exc) {
  			// We aren't interested in exceptions! All necessary information has been written to the logging-window!
  			// Unfortunately ANT-Refactoring isn't done yet!
  			// Chris: HACK: remove when Ant-Refactoring is finished!
  			logger.buildFailed( exc );			
  		}
  		return;
  	}
  	/**
  	 * Fills the taget-list with project-targets
  	 */
  	private void fillList() {
  		getTargetList().removeAll();
  		Vector targets = getBuildInfo().getProjectTargets();
  		for (int i = 0;i < targets.size(); i++) {
  			getTargetList().add(targets.elementAt(i).toString());
  		}
  		getTargetList().select(iBuildInfo.getProjectTargets().indexOf(iBuildInfo.getTarget()));
  		if (getTargetList().getSelectedIndex() >= 0) {
  			getBuildButton().setEnabled(true);
  		}
  	}
  	/**
  	 * Copied from DefaultLogger to provide the same time-format.
  	 */
  	public static String formatTime(long millis) {
  		long seconds = millis / 1000;
  		long minutes = seconds / 60;
  
  		if (minutes > 0) {
  			return Long.toString(minutes) + " minute"
  				+ (minutes == 1 ? " " : "s ")
  				+ Long.toString(seconds%60) + " second"
  				+ (seconds%60 == 1 ? "" : "s");
  		}
  		else {
  			return Long.toString(seconds) + " second"
  				+ (seconds%60 == 1 ? "" : "s");
  		}
  	}
  	/**
  	 * Return the AboutCommandPanel property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getAboutCommandPanel() {
  		if (iAboutCommandPanel == null) {
  			try {
  				iAboutCommandPanel = new Panel();
  				iAboutCommandPanel.setName("AboutCommandPanel");
  				iAboutCommandPanel.setLayout(new java.awt.FlowLayout());
  				getAboutCommandPanel().add(getAboutOkButton(), getAboutOkButton().getName());
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutCommandPanel;
  	}
  	/**
  	 * Return the AboutContactLabel property value.
  	 * @return java.awt.Label
  	 */
  	private Label getAboutContactLabel() {
  		if (iAboutContactLabel == null) {
  			try {
  				iAboutContactLabel = new Label();
  				iAboutContactLabel.setName("AboutContactLabel");
  				iAboutContactLabel.setAlignment(java.awt.Label.CENTER);
  				iAboutContactLabel.setText("contact: wolf.siberski@tui.de or christoph.wilhelms@tui.de");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutContactLabel;
  	}
  	/**
  	 * Return the AboutDevLabel property value.
  	 * @return java.awt.Label
  	 */
  	private Label getAboutDevLabel() {
  		if (iAboutDevLabel == null) {
  			try {
  				iAboutDevLabel = new Label();
  				iAboutDevLabel.setName("AboutDevLabel");
  				iAboutDevLabel.setAlignment(java.awt.Label.CENTER);
  				iAboutDevLabel.setText("developed by Wolf Siberski & Christoph Wilhelms");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutDevLabel;
  	}
  	/**
  	 * Return the AboutDialog property value.
  	 * @return java.awt.Dialog
  	 */
  	private Dialog getAboutDialog() {
  		if (iAboutDialog == null) {
  			try {
  				iAboutDialog = new Dialog(this);
  				iAboutDialog.setName("AboutDialog");
  				iAboutDialog.setResizable(false);
  				iAboutDialog.setLayout(new java.awt.BorderLayout());
  				iAboutDialog.setBounds(550, 14, 383, 142);
  				iAboutDialog.setModal(true);
  				iAboutDialog.setTitle("About...");
  				getAboutDialog().add(getAboutDialogContentPanel(), "Center");
  				iAboutDialog.pack();
  				centerDialog(iAboutDialog);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutDialog;
  	}
  	/**
  	 * Return the AboutDialogContentPanel property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getAboutDialogContentPanel() {
  		if (iAboutDialogContentPanel == null) {
  			try {
  				iAboutDialogContentPanel = new Panel();
  				iAboutDialogContentPanel.setName("AboutDialogContentPanel");
  				iAboutDialogContentPanel.setLayout(new java.awt.BorderLayout());
  				getAboutDialogContentPanel().add(getAboutCommandPanel(), "South");
  				getAboutDialogContentPanel().add(getAboutInfoPanel(), "Center");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutDialogContentPanel;
  	}
  	/**
  	 * Return the AboutInfoPanel property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getAboutInfoPanel() {
  		if (iAboutInfoPanel == null) {
  			try {
  				iAboutInfoPanel = new Panel();
  				iAboutInfoPanel.setName("AboutInfoPanel");
  				iAboutInfoPanel.setLayout(new GridBagLayout());
  
  				GridBagConstraints constraintsAboutTitleLabel = new GridBagConstraints();
  				constraintsAboutTitleLabel.gridx = 0; constraintsAboutTitleLabel.gridy = 0;
  				constraintsAboutTitleLabel.fill = GridBagConstraints.HORIZONTAL;
  				constraintsAboutTitleLabel.weightx = 1.0;
  				constraintsAboutTitleLabel.weighty = 1.0;
  				constraintsAboutTitleLabel.insets = new Insets(4, 0, 4, 0);
  				getAboutInfoPanel().add(getAboutTitleLabel(), constraintsAboutTitleLabel);
  
  				GridBagConstraints constraintsAboutDevLabel = new GridBagConstraints();
  				constraintsAboutDevLabel.gridx = 0; constraintsAboutDevLabel.gridy = 1;
  				constraintsAboutDevLabel.fill = GridBagConstraints.HORIZONTAL;
  				constraintsAboutDevLabel.weightx = 1.0;
  				constraintsAboutDevLabel.insets = new Insets(4, 0, 0, 0);
  				getAboutInfoPanel().add(getAboutDevLabel(), constraintsAboutDevLabel);
  
  				GridBagConstraints constraintsAboutContactLabel = new GridBagConstraints();
  				constraintsAboutContactLabel.gridx = 0; constraintsAboutContactLabel.gridy = 2;
  				constraintsAboutContactLabel.fill = GridBagConstraints.HORIZONTAL;
  				constraintsAboutContactLabel.weightx = 1.0;
  				constraintsAboutContactLabel.insets = new Insets(2, 0, 4, 0);
  				getAboutInfoPanel().add(getAboutContactLabel(), constraintsAboutContactLabel);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutInfoPanel;
  	}
  	/**
  	 * Return the AboutMenuItem property value.
  	 * @return java.awt.MenuItem
  	 */
  	private MenuItem getAboutMenuItem() {
  		if (iAboutMenuItem == null) {
  			try {
  				iAboutMenuItem = new MenuItem();
  				iAboutMenuItem.setLabel("About...");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutMenuItem;
  	}
  	/**
  	 * Return the AboutOkButton property value.
  	 * @return java.awt.Button
  	 */
  	private Button getAboutOkButton() {
  		if (iAboutOkButton == null) {
  			try {
  				iAboutOkButton = new Button();
  				iAboutOkButton.setName("AboutOkButton");
  				iAboutOkButton.setLabel("OK");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutOkButton;
  	}
  	/**
  	 * Return the AboutTitleLabel property value.
  	 * @return java.awt.Label
  	 */
  	private Label getAboutTitleLabel() {
  		if (iAboutTitleLabel == null) {
  			try {
  				iAboutTitleLabel = new Label();
  				iAboutTitleLabel.setName("AboutTitleLabel");
  				iAboutTitleLabel.setFont(new Font("Arial", 1, 12));
  				iAboutTitleLabel.setAlignment(Label.CENTER);
  				iAboutTitleLabel.setText("Ant VisualAge for Java Tool-Integration");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAboutTitleLabel;
  	}
  	/**
  	 * Return the AntMakeMenuBar property value.
  	 * @return java.awt.MenuBar
  	 */
  	private MenuBar getAntMakeMenuBar() {
  		if (iAntMakeMenuBar == null) {
  			try {
  				iAntMakeMenuBar = new MenuBar();
  				iAntMakeMenuBar.add(getFileMenu());
  				iAntMakeMenuBar.add(getHelpMenu());
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iAntMakeMenuBar;
  	}
  	/**
  	 * Return the BrowseButton property value.
  	 * @return Button
  	 */
  	private Button getBrowseButton() {
  		if (iBrowseButton == null) {
  			try {
  				iBrowseButton = new Button();
  				iBrowseButton.setName("BrowseButton");
  				iBrowseButton.setLabel("...");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iBrowseButton;
  	}
  	/**
  	 * Return the BuildButton property value.
  	 * @return java.awt.Button
  	 */
  	private Button getBuildButton() {
  		if (iBuildButton == null) {
  			try {
  				iBuildButton = new Button();
  				iBuildButton.setName("BuildButton");
  				iBuildButton.setLabel("Build");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iBuildButton;
  	}
  	/**
  	 * Return the BuildFileLabel property value.
  	 * @return java.awt.Label
  	 */
  	private Label getBuildFileLabel() {
  		if (iBuildFileLabel == null) {
  			try {
  				iBuildFileLabel = new Label();
  				iBuildFileLabel.setName("BuildFileLabel");
  				iBuildFileLabel.setText("Ant-Buildfile:");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iBuildFileLabel;
  	}
  	/**
  	 * Return the BuildFileTextField property value.
  	 * @return java.awt.TextField
  	 */
  	private TextField getBuildFileTextField() {
  		if (iBuildFileTextField == null) {
  			try {
  				iBuildFileTextField = new TextField();
  				iBuildFileTextField.setName("BuildFileTextField");
  				iBuildFileTextField.setBackground(SystemColor.textHighlightText);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iBuildFileTextField;
  	}
  	/**
  	 * Return the BuildInfo property value.
  	 * @return org.apache.tools.ant.taskdefs.optional.ide.VAJBuildInfo
  	 */
  	private VAJBuildInfo getBuildInfo() {
  		return iBuildInfo;
  	}
  	/**
  	 * Return the CloseButton property value.
  	 * @return java.awt.Button
  	 */
  	private Button getCloseButton() {
  		if (iCloseButton == null) {
  			try {
  				iCloseButton = new Button();
  				iCloseButton.setName("CloseButton");
  				iCloseButton.setLabel("Close");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iCloseButton;
  	}
  	/**
  	 * Return the CommandButtonPanel property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getCommandButtonPanel() {
  		if (iCommandButtonPanel == null) {
  			try {
  				iCommandButtonPanel = new Panel();
  				iCommandButtonPanel.setName("CommandButtonPanel");
  				iCommandButtonPanel.setLayout(getCommandButtonPanelFlowLayout());
  				iCommandButtonPanel.setBackground(SystemColor.control);
  				iCommandButtonPanel.add(getReloadButton());
  				getCommandButtonPanel().add(getBuildButton(), getBuildButton().getName());
  				getCommandButtonPanel().add(getCloseButton(), getCloseButton().getName());
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iCommandButtonPanel;
  	}
  	/**
  	 * Return the CommandButtonPanelFlowLayout property value.
  	 * @return java.awt.FlowLayout
  	 */
  	private FlowLayout getCommandButtonPanelFlowLayout() {
  		FlowLayout iCommandButtonPanelFlowLayout = null;
  		try {
  			/* Create part */
  			iCommandButtonPanelFlowLayout = new FlowLayout();
  			iCommandButtonPanelFlowLayout.setAlignment(FlowLayout.RIGHT);
  		} catch (Throwable iExc) {
  			handleException(iExc);
  		};
  		return iCommandButtonPanelFlowLayout;
  	}
  	/**
  	 * Return the ContentsPane property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getContentsPane() {
  		if (iContentsPane == null) {
  			try {
  				iContentsPane = new Panel();
  				iContentsPane.setName("ContentsPane");
  				iContentsPane.setLayout(new BorderLayout());
  				getContentsPane().add(getCommandButtonPanel(), "South");
  				getContentsPane().add(getOptionenPanel(), "Center");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iContentsPane;
  	}
  	/**
  	 * Return the FileDialog property value.
  	 * @return java.awt.FileDialog
  	 */
  	private FileDialog getFileDialog() {
  		if (iFileDialog == null) {
  			try {
  				iFileDialog = new FileDialog(this);
  				iFileDialog.setName("FileDialog");
  				iFileDialog.setLayout(null);
  				centerDialog(iFileDialog);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iFileDialog;
  	}
  	/**
  	 * Return the FileMenu property value.
  	 * @return java.awt.Menu
  	 */
  	private Menu getFileMenu() {
  		if (iFileMenu == null) {
  			try {
  				iFileMenu = new Menu();
  				iFileMenu.setLabel("File");
  				iFileMenu.add(getSaveMenuItem());
  				iFileMenu.add(getMenuSeparator());
  				iFileMenu.add(getShowLogMenuItem());
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iFileMenu;
  	}
  	/**
  	 * Return the HelpMenu property value.
  	 * @return java.awt.Menu
  	 */
  	private Menu getHelpMenu() {
  		if (iHelpMenu == null) {
  			try {
  				iHelpMenu = new Menu();
  				iHelpMenu.setLabel("Help");
  				iHelpMenu.add(getAboutMenuItem());
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iHelpMenu;
  	}
  	/**
  	 * Return the MenuSeparator1 property value.
  	 * @return java.awt.MenuItem
  	 */
  	private MenuItem getMenuSeparator() {
  		if (iMenuSeparator == null) {
  			try {
  				iMenuSeparator = new MenuItem();
  				iMenuSeparator.setLabel("-");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMenuSeparator;
  	}
  	/**
  	 * Return the MessageClearLogButton property value.
  	 * @return java.awt.Button
  	 */
  	private Button getMessageClearLogButton() {
  		if (iMessageClearLogButton == null) {
  			try {
  				iMessageClearLogButton = new Button();
  				iMessageClearLogButton.setName("MessageClearLogButton");
  				iMessageClearLogButton.setLabel("Clear Log");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageClearLogButton;
  	}
  	/**
  	 * Return the MessageCommandPanel property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getMessageCommandPanel() {
  		if (iMessageCommandPanel == null) {
  			try {
  				iMessageCommandPanel = new Panel();
  				iMessageCommandPanel.setName("MessageCommandPanel");
  				iMessageCommandPanel.setLayout(new FlowLayout());
  				getMessageCommandPanel().add(getMessageClearLogButton(), getMessageClearLogButton().getName());
  				getMessageCommandPanel().add(getMessageOkButton(), getMessageOkButton().getName());
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageCommandPanel;
  	}
  	/**
  	 * Return the MessageContentPanel property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getMessageContentPanel() {
  		if (iMessageContentPanel == null) {
  			try {
  				iMessageContentPanel = new Panel();
  				iMessageContentPanel.setName("MessageContentPanel");
  				iMessageContentPanel.setLayout(new BorderLayout());
  				iMessageContentPanel.setBackground(SystemColor.control);
  				getMessageContentPanel().add(getMessageTextArea(), "Center");
  				getMessageContentPanel().add(getMessageCommandPanel(), "South");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageContentPanel;
  	}
  	/**
  	 * Return the MessageFrame property value.
  	 * @return java.awt.Frame
  	 */
  	private Frame getMessageFrame() {
  		if (iMessageFrame == null) {
  			try {
  				iMessageFrame = new Frame();
  				iMessageFrame.setName("MessageFrame");
  				iMessageFrame.setLayout(new BorderLayout());
  				iMessageFrame.setBounds(0, 0, 750, 250);
  				iMessageFrame.setTitle("Message Log");
  				iMessageFrame.add(getMessageContentPanel(), "Center");
  				iMessageFrame.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (iMessageFrame.getSize().width / 2), (java.awt.Toolkit.getDefaultToolkit().getScreenSize().height / 2));
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageFrame;
  	}
  	/**
  	 * Return the MessageOkButton property value.
  	 * @return java.awt.Button
  	 */
  	private Button getMessageOkButton() {
  		if (iMessageOkButton == null) {
  			try {
  				iMessageOkButton = new Button();
  				iMessageOkButton.setName("MessageOkButton");
  				iMessageOkButton.setLabel("Close");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageOkButton;
  	}
  	/**
  	 * Return the MessageOutputLevelChoice property value.
  	 * @return java.awt.Choice
  	 */
  	private Choice getMessageOutputLevelChoice() {
  		if (iMessageOutputLevelChoice == null) {
  			try {
  				iMessageOutputLevelChoice = new Choice();
  				iMessageOutputLevelChoice.setName("MessageOutputLevelChoice");
  				iMessageOutputLevelChoice.add("Error");
  				iMessageOutputLevelChoice.add("Warning");
  				iMessageOutputLevelChoice.add("Info");
  				iMessageOutputLevelChoice.add("Verbose");
  				iMessageOutputLevelChoice.add("Debug");
  				iMessageOutputLevelChoice.select(2);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageOutputLevelChoice;
  	}
  	/**
  	 * Return the MessageOutputLevelLabel property value.
  	 * @return java.awt.Label
  	 */
  	private Label getMessageOutputLevelLabel() {
  		if (iMessageOutputLevelLabel == null) {
  			try {
  				iMessageOutputLevelLabel = new Label();
  				iMessageOutputLevelLabel.setName("MessageOutputLevelLabel");
  				iMessageOutputLevelLabel.setText("Message Level:");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageOutputLevelLabel;
  	}
  	/**
  	 * Return the MessageTextArea property value.
  	 * @return java.awt.TextArea
  	 */
  	private TextArea getMessageTextArea() {
  		if (iMessageTextArea == null) {
  			try {
  				iMessageTextArea = new TextArea();
  				iMessageTextArea.setName("MessageTextArea");
  				iMessageTextArea.setFont(new Font("monospaced", 0, 12));
  				iMessageTextArea.setText("");
  				iMessageTextArea.setEditable(false);
  				iMessageTextArea.setEnabled(true);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iMessageTextArea;
  	}
  	/**
  	 * Return the Panel1 property value.
  	 * @return java.awt.Panel
  	 */
  	private Panel getOptionenPanel() {
  		if (iOptionenPanel == null) {
  			try {
  				iOptionenPanel = new Panel();
  				iOptionenPanel.setName("OptionenPanel");
  				iOptionenPanel.setLayout(new GridBagLayout());
  				iOptionenPanel.setBackground(SystemColor.control);
  
  				GridBagConstraints constraintsProjectLabel = new GridBagConstraints();
  				constraintsProjectLabel.gridx = 0; constraintsProjectLabel.gridy = 0;
  				constraintsProjectLabel.anchor = GridBagConstraints.WEST;
  				constraintsProjectLabel.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getProjectLabel(), constraintsProjectLabel);
  
  				GridBagConstraints constraintsBuildFileLabel = new GridBagConstraints();
  				constraintsBuildFileLabel.gridx = 0; constraintsBuildFileLabel.gridy = 1;
  				constraintsBuildFileLabel.anchor = GridBagConstraints.WEST;
  				constraintsBuildFileLabel.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getBuildFileLabel(), constraintsBuildFileLabel);
  
  				GridBagConstraints constraintsTargetLabel = new GridBagConstraints();
  				constraintsTargetLabel.gridx = 0; constraintsTargetLabel.gridy = 2;
  				constraintsTargetLabel.anchor = GridBagConstraints.NORTHWEST;
  				constraintsTargetLabel.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getTargetLabel(), constraintsTargetLabel);
  
  				GridBagConstraints constraintsProjectText = new GridBagConstraints();
  				constraintsProjectText.gridx = 1; constraintsProjectText.gridy = 0;
  				constraintsProjectText.gridwidth = 2;
  				constraintsProjectText.fill = GridBagConstraints.HORIZONTAL;
  				constraintsProjectText.anchor = GridBagConstraints.WEST;
  				constraintsProjectText.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getProjectText(), constraintsProjectText);
  
  				GridBagConstraints constraintsBuildFileTextField = new GridBagConstraints();
  				constraintsBuildFileTextField.gridx = 1; constraintsBuildFileTextField.gridy = 1;
  				constraintsBuildFileTextField.fill = GridBagConstraints.HORIZONTAL;
  				constraintsBuildFileTextField.anchor = GridBagConstraints.WEST;
  				constraintsBuildFileTextField.weightx = 1.0;
  				constraintsBuildFileTextField.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getBuildFileTextField(), constraintsBuildFileTextField);
  
  				GridBagConstraints constraintsBrowseButton = new GridBagConstraints();
  				constraintsBrowseButton.gridx = 2; constraintsBrowseButton.gridy = 1;
  				constraintsBrowseButton.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getBrowseButton(), constraintsBrowseButton);
  
  				GridBagConstraints constraintsTargetList = new GridBagConstraints();
  				constraintsTargetList.gridx = 1; constraintsTargetList.gridy = 2;
  				constraintsTargetList.gridheight = 2;
  				constraintsTargetList.fill = GridBagConstraints.BOTH;
  				constraintsTargetList.weightx = 1.0;
  				constraintsTargetList.weighty = 1.0;
  				constraintsTargetList.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getTargetList(), constraintsTargetList);
  
  				GridBagConstraints constraintsMessageOutputLevelLabel = new GridBagConstraints();
  				constraintsMessageOutputLevelLabel.gridx = 0; constraintsMessageOutputLevelLabel.gridy = 4;
  				constraintsMessageOutputLevelLabel.anchor = GridBagConstraints.WEST;
  				constraintsMessageOutputLevelLabel.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getMessageOutputLevelLabel(), constraintsMessageOutputLevelLabel);
  
  				GridBagConstraints constraintsMessageOutputLevelChoice = new GridBagConstraints();
  				constraintsMessageOutputLevelChoice.gridx = 1; constraintsMessageOutputLevelChoice.gridy = 4;
  				constraintsMessageOutputLevelChoice.fill = GridBagConstraints.HORIZONTAL;
  				constraintsMessageOutputLevelChoice.anchor = GridBagConstraints.WEST;
  				constraintsMessageOutputLevelChoice.weightx = 1.0;
  				constraintsMessageOutputLevelChoice.insets = new Insets(4, 4, 4, 4);
  				getOptionenPanel().add(getMessageOutputLevelChoice(), constraintsMessageOutputLevelChoice);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iOptionenPanel;
  	}
  	/**
  	 * Return the ProjectLabel property value.
  	 * @return java.awt.Label
  	 */
  	private Label getProjectLabel() {
  		if (iProjectLabel == null) {
  			try {
  				iProjectLabel = new Label();
  				iProjectLabel.setName("ProjectLabel");
  				iProjectLabel.setText("Projectname:");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iProjectLabel;
  	}
  	/**
  	 * Return the ProjectText property value.
  	 * @return java.awt.Label
  	 */
  	private Label getProjectText() {
  		if (iProjectText == null) {
  			try {
  				iProjectText = new Label();
  				iProjectText.setName("ProjectText");
  				iProjectText.setText(" ");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iProjectText;
  	}
  	/**
  	 * Return the ReloadButton property value.
  	 * @return java.awt.Button
  	 */
  	private Button getReloadButton() {
  		if (iReloadButton == null) {
  			try {
  				iReloadButton = new Button();
  				iReloadButton.setName("ReloadButton");
  				iReloadButton.setLabel("(Re)Load");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iReloadButton;
  	}
  	/**
  	 * Return the SaveMenuItem property value.
  	 * @return java.awt.MenuItem
  	 */
  	private MenuItem getSaveMenuItem() {
  		if (iSaveMenuItem == null) {
  			try {
  				iSaveMenuItem = new MenuItem();
  				iSaveMenuItem.setLabel("Save BuildInfo To Repository");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iSaveMenuItem;
  	}
  	/**
  	 * Return the ShowLogMenuItem property value.
  	 * @return java.awt.MenuItem
  	 */
  	private MenuItem getShowLogMenuItem() {
  		if (iShowLogMenuItem == null) {
  			try {
  				iShowLogMenuItem = new MenuItem();
  				iShowLogMenuItem.setLabel("Log");
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iShowLogMenuItem;
  	}
  	/**
  	 * Return the TargetLabel property value.
  	 * @return java.awt.Label
  	 */
  	private Label getTargetLabel() {
  		if (iTargetLabel == null) {
  			try {
  				iTargetLabel = new Label();
  				iTargetLabel.setName("TargetLabel");
  				iTargetLabel.setText("Target:");
  				iTargetLabel.setEnabled(true);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iTargetLabel;
  	}
  	/**
  	 * Return the TargetList property value.
  	 * @return java.awt.List
  	 */
  	private List getTargetList() {
  		if (iTargetList == null) {
  			try {
  				iTargetList = new List();
  				iTargetList.setName("TargetList");
  				iTargetList.setEnabled(true);
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  		return iTargetList;
  	}
  	/**
  	 * Called whenever the part throws an exception.
  	 * @param exception Throwable
  	 */
  	private void handleException(Throwable exception) {
  		// Write exceptions to the log-window
  		getMessageTextArea().append(lineSeparator + lineSeparator + exception.getMessage());
  		getMessageFrame().show();
  		
  	}
  	/**
  	 * Initializes connections
  	 * @exception Exception The exception description.
  	 */
  	private void initConnections() throws Exception {
  		this.addWindowListener(iEventHandler);
  		getBrowseButton().addActionListener(iEventHandler);
  		getCloseButton().addActionListener(iEventHandler);
  		getBuildButton().addActionListener(iEventHandler);
  		getSaveMenuItem().addActionListener(iEventHandler);
  		getAboutOkButton().addActionListener(iEventHandler);
  		getAboutMenuItem().addActionListener(iEventHandler);
  		getMessageOkButton().addActionListener(iEventHandler);
  		getMessageClearLogButton().addActionListener(iEventHandler);
  		getMessageOkButton().addActionListener(iEventHandler);
  		getShowLogMenuItem().addActionListener(iEventHandler);
  		getAboutDialog().addWindowListener(iEventHandler);
  		getMessageFrame().addWindowListener(iEventHandler);
  		getReloadButton().addActionListener(iEventHandler);
  		getTargetList().addItemListener(iEventHandler);
  		getMessageOutputLevelChoice().addItemListener(iEventHandler);
  		getBuildFileTextField().addTextListener(iEventHandler);
  		connectProjectNameToLabel();
  		connectBuildFileNameToTextField();
  	}
  	/**
  	 * Initialize the class.
  	 */
  	private void initialize() {
  		try {
  			setName("AntMake");
  			setMenuBar(getAntMakeMenuBar());
  			setLayout(new java.awt.BorderLayout());
  			setSize(389, 222);
  			setTitle("Ant VisualAge for Java Tool-Integration");
  			add(getContentsPane(), "Center");
  			initConnections();
  		} catch (Throwable iExc) {
  			handleException(iExc);
  		}
  		setLocation((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (getSize().width / 2), (java.awt.Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (getSize().height));
  		if ((getTargetList().getItemCount() == 0) || (getTargetList().getSelectedIndex() < 0)) {
  			getBuildButton().setEnabled(false);
  		}
  	}
  	/**
  	 * Saves the build-informations to repository
  	 */
  	private void saveBuildInfo() {
  		try {
  			VAJAntTool.saveBuildData(getBuildInfo());
  		}
  		catch (Throwable exc) {
  			// This Exception occurs when you try to write into a versioned project
  			handleException( exc );
  		}
  		return;
  	}
  	/**
  	 * Set the BuildInfo to a new value.
  	 * @param newValue org.apache.tools.ant.taskdefs.optional.vaj.VAJBuildInfo
  	 */
  	private void setBuildInfo(VAJBuildInfo newValue) {
  		if (iBuildInfo != newValue) {
  			try {
  				/* Stop listening for events from the current object */
  				if (iBuildInfo != null) {
  					iBuildInfo.removePropertyChangeListener(iEventHandler);
  				}
  				iBuildInfo = newValue;
  
  				/* Listen for events from the new object */
  				if (iBuildInfo != null) {
  					iBuildInfo.addPropertyChangeListener(iEventHandler);
  				}
  				connectProjectNameToLabel();
  				connectBuildFileNameToTextField();
  
  				// Select the log-level given by BuildInfo
  				getMessageOutputLevelChoice().select(iBuildInfo.getOutputMessageLevel());
  				fillList();
  				// BuildInfo can conly be saved to a VAJ project if tool API is called via the projects context-menu
  				if ((iBuildInfo.getVAJProjectName() == null) || (iBuildInfo.getVAJProjectName().equals(""))) {
  					getSaveMenuItem().setEnabled(false);
  				}
  			} catch (Throwable iExc) {
  				handleException(iExc);
  			}
  		}
  	}
  }
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJBuildInfo.java
  
  Index: VAJBuildInfo.java
  ===================================================================
  package org.apache.tools.ant.taskdefs.optional.ide;
  
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  import java.util.Hashtable;
  import java.util.Vector;
  import java.util.Enumeration;
  import org.apache.tools.ant.*;
  import java.io.File;
  
  /**
   * This class wraps the Ant project information needed to
   * start Ant from Visual Age.
   * It serves the following purposes:
   * - acts as model for AntMakeFrame
   * - converts itself to/from String (to store the information
   *   as ToolData in the VA repository)
   * - wraps Project functions for the GUI (get target list,
   *   execute target)
   *    
   * @author Wolf Siberski, TUI Infotec GmbH
   */
  
  public class VAJBuildInfo {
  	// name of the VA project this BuildInfo belongs to
  	private String vajProjectName = "";
  	
  		// name of the Ant build file
  	private String buildFileName = "";
  
  		// main targets found in the build file
  	private Vector projectTargets = new Vector();
  
  		// target selected for execution
  	private java.lang.String target = "";
  
  		// log level
  	private int outputMessageLevel = Project.MSG_INFO;
  
  		// Ant Project created from build file
  	private transient Project project;
  
  		// is true if Project initialization was successful
  	private transient boolean projectInitialized = false;
  
  		// Support for bound properties
  	protected transient java.beans.PropertyChangeSupport propertyChange;
  /**
   * The addPropertyChangeListener method was generated to support the propertyChange field.
   */
  public synchronized void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
  	getPropertyChange().addPropertyChangeListener(listener);
  }
  /**
   * Returns the BuildInfo information as String. The BuildInfo can
   * be rebuilt from that String by calling parse().
   * @return java.lang.String
   */
  public String asDataString() {
  	String result = getOutputMessageLevel() + "|" + getBuildFileName() + "|" + getTarget();
  	for ( Enumeration e = getProjectTargets().elements(); e.hasMoreElements(); ) {
  		result = result + "|" + e.nextElement();
  	}
  
  	return result;
  }
  /**
   * Executes the target set by setTarget().
   * @param listener  BuildListener for the output of the build
   */
  public void executeProject( BuildListener listener ) {
  	Throwable error = null;
  	try {
  		if (!isProjectInitialized()) {
  			project = new Project();
  		}
  		project.addBuildListener( listener );
  		// Chris: HACK: replace when Ant-Refactoring is finished!
  //		project.fireBuildStarted();
  		if (!isProjectInitialized()) {
  			initProject();
  		}
  		project.executeTarget(target);
  		
  	} catch (RuntimeException exc) {
  		error = exc;
  		throw exc;
  	} catch (Error err) {
  		error = err;
  		throw err;
  	} finally {
  		// Chris: HACK: replace when Ant-Refactoring is finished!
  //		project.fireBuildFinished(error);
  		project.removeBuildListener( listener );
  	}
  }
  	/**
  	 * Search for the insert position to keep names a sorted list of Strings
  	 * This method has been copied from org.apache.tools.ant.Main
  	 */
  	private static int findTargetPosition(Vector names, String name) {
  		int res = names.size();
  		for (int i=0; i<names.size() && res == names.size(); i++) {
  			if (name.compareTo((String)names.elementAt(i)) < 0) {
  				res = i;
  			}
  		}
  		return res;
  	}
  /**
   * The firePropertyChange method was generated to support the propertyChange field.
   */
  public void firePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue) {
  	getPropertyChange().firePropertyChange(propertyName, oldValue, newValue);
  }
  /**
   * Returns the build file name.
   * @return build file name.
   */
  public String getBuildFileName() {
  	return buildFileName;
  }
  /**
   * Returns the log level
   * @return log level.
   */
  public int getOutputMessageLevel() {
  	return outputMessageLevel;
  }
  /**
   * Returns the Ant project
   * @return org.apache.tools.ant.Project
   */
  private Project getProject() {
  	return project;
  }
  /**
   * return a list of all targets in the current buildfile
   */
  public Vector getProjectTargets() {
  	return projectTargets;
  }
  /**
   * Accessor for the propertyChange field.
   */
  protected java.beans.PropertyChangeSupport getPropertyChange() {
  	if (propertyChange == null) {
  		propertyChange = new java.beans.PropertyChangeSupport(this);
  	};
  	return propertyChange;
  }
  /**
   * Insert the method's description here.
   * Creation date: (07.11.2000 10:34:18)
   * @return java.lang.String
   */
  public java.lang.String getTarget() {
  	return target;
  }
  /**
   * returns the VA project name
   * @return The projectName property value.
   */
  public String getVAJProjectName() {
  	return vajProjectName;
  }
  /**
   * Initializes the Ant project. Assumes that the
   * project attribute is already set.
   */
  private void initProject() {
  	try {
  		project.init();
  		File buildFile = new File(getBuildFileName());
  		project.setUserProperty("ant.file", buildFile.getAbsolutePath());
  		ProjectHelper.configureProject(project, buildFile);
  		setProjectInitialized(true);
  	} catch (RuntimeException exc) {
  		setProjectInitialized(false);
  		throw exc;
  	} catch (Error err) {
  		setProjectInitialized(false);
  		throw err;
  	}
  }
  /**
   * Returns true, if the Ant project is initialized
   * (i.e. buildfile loaded)
   */
  public boolean isProjectInitialized() {
  	return projectInitialized;
  }
  /**
   * Creates a BuildInfo object from a String
   * The String must be in the format
   * outputMessageLevel'|'buildFileName'|'defaultTarget'|'(project target'|')*
   *
   * @return org.apache.tools.ant.taskdefs.optional.vaj.BuildInfo
   * @param data java.lang.String
   */
  public static VAJBuildInfo parse(String data) {
  	VAJBuildInfo result = new VAJBuildInfo();
  
  	try {
  		java.util.StringTokenizer tok = new java.util.StringTokenizer( data, "|" );
  		result.setOutputMessageLevel( tok.nextToken() );
  		result.setBuildFileName( tok.nextToken() );
  		result.setTarget( tok.nextToken() );
  		while( tok.hasMoreTokens() ) {
  			result.projectTargets.addElement( tok.nextToken() );
  		}
  	} catch ( Throwable t ) {
  	}
  	return result;
  }
  /**
   * The removePropertyChangeListener method was generated to support the propertyChange field.
   */
  public synchronized void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
  	getPropertyChange().removePropertyChangeListener(listener);
  }
  /**
   * Sets the build file name
   * @param buildFileName build file name
   */
  public void setBuildFileName(String newBuildFileName) {
  	String oldValue = buildFileName;
  	buildFileName = newBuildFileName;
  	setProjectInitialized(false);
  	firePropertyChange("buildFileName", oldValue, buildFileName);
  }
  /**
   * Sets the log level (value must be one of the constants in Project)
   * @param outputMessageLevel log level.
   */
  public void setOutputMessageLevel(int newOutputMessageLevel) {
  	int oldValue = outputMessageLevel;
  	outputMessageLevel = newOutputMessageLevel;
  	firePropertyChange("outputMessageLevel", new Integer(oldValue), new Integer(outputMessageLevel));
  }
  /**
   * Sets the log level (value must be one of the constants in Project)
   * @param outputMessageLevel log level as String.
   */
  private void setOutputMessageLevel(String outputMessageLevel) {
  	int level = Integer.parseInt( outputMessageLevel );
  	setOutputMessageLevel( level );
  }
  /**
    */
  private void setProjectInitialized(boolean initialized) {
  	Boolean oldValue = new Boolean(projectInitialized);
  	projectInitialized = initialized;
  	firePropertyChange("projectInitialized", oldValue, new Boolean(projectInitialized));
  }
  /**
   * Sets the target to execute when executeBuild is called
   * @param newTarget build target
   */
  public void setTarget(String newTarget) {
  	String oldValue = target;
  	target = newTarget;
  	firePropertyChange("target", oldValue, target);
  }
  /**
   * Sets the name of the Visual Age for Java project where
   * this BuildInfo belongs to
   * @param newProjectName VAJ project
   */
  public void setVAJProjectName(String newVAJProjectName) {
  	String oldValue = vajProjectName;
  	vajProjectName = newVAJProjectName;
  	firePropertyChange("VAJProjectName", oldValue, vajProjectName);
  }
  /**
   * reloads the build file and updates the target list
   */
  public void updateTargetList() {
  	project = new Project();
  	initProject();
  	projectTargets.removeAllElements();
  	Enumeration ptargets = project.getTargets().elements();
  	while (ptargets.hasMoreElements()) {
  		Target currentTarget = (Target) ptargets.nextElement();
  		if ( currentTarget.getDescription() != null ) {
  			String targetName = currentTarget.getName();
  			int pos = findTargetPosition( projectTargets, targetName );
  			projectTargets.insertElementAt(targetName, pos);
  		}
  	}
  }
  }
  
  
  

Mime
View raw message