Return-Path: Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list ant-dev@jakarta.apache.org Delivered-To: moderator for ant-dev@jakarta.apache.org Received: (qmail 17472 invoked by uid 500); 12 Jan 2001 15:22:53 -0000 Delivered-To: apmail-jakarta-ant-cvs@apache.org Received: (qmail 17296 invoked by uid 1192); 12 Jan 2001 15:22:52 -0000 Date: 12 Jan 2001 15:22:52 -0000 Message-ID: <20010112152252.17212.qmail@apache.org> From: glennm@apache.org To: jakarta-ant-cvs@apache.org Subject: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ide default.ini VAJAntTool.java VAJAntToolGUI.java VAJBuildInfo.java 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 * . */ 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 * . */ 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. *

* 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! *

* 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 code-beautification ;-). *

* @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 * . */ 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