IssueZilla 10518 - Add BeanShell language support

This commit is contained in:
Tomas O'Connor
2003-01-16 16:51:45 +00:00
parent d960e620bd
commit 07b4957c44
6 changed files with 672 additions and 67 deletions

View File

@@ -23,28 +23,3 @@ TITLE_WizardPanel=Panel Name
# CallableSystemAction
LBL_Action=Run Action
# Window System API
# TopComponent
LBL_component_name=<name of component>
#LBL_mode_name=<name of mode>
#LBL_workspace_name=<name of workspace>
# WizardDescriptor
# Dialog title:
TITLE_wizard=My Wizard
# WizardDescriptor.Iterator
# Label the sequence #. Appears at top of pane:
# e.g. "Panel Name (1 of 3)"
TITLE_x_of_y={0} of {1}
# Provide list of steps to show in left pane:
#LBL_step_1=Select First Thing
#LBL_step_2=Configure Details
# WizardDescriptor.Panel
# Will appear in dialog title; see above
TITLE_WizardPanel=Panel Name
# CallableSystemAction
LBL_Action=Run Action

View File

@@ -0,0 +1,280 @@
/*************************************************************************
*
* $RCSfile: JavaScriptIterator.java,v $
*
* $Revision: 1.1 $
*
* last change: $Author: toconnor $ $Date: 2003-01-16 17:51:44 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
package org.openoffice.netbeans.modules.office.wizard;
import java.awt.Component;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Set;
import javax.swing.JComponent;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.openide.ErrorManager;
import org.openide.TopManager;
import org.openide.NotifyDescriptor;
import org.openide.WizardDescriptor;
import org.openide.cookies.OpenCookie;
import org.openide.cookies.SourceCookie;
import org.openide.loaders.*;
import org.openide.util.NbBundle;
import org.openide.filesystems.*;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.netbeans.modules.office.loader.ParcelFolder;
import org.openoffice.netbeans.modules.office.filesystem.OpenOfficeDocFileSystem;
import org.openoffice.netbeans.modules.office.utils.PackageRemover;
/** A template wizard iterator (sequence of panels).
* Used to fill in the second and subsequent panels in the New wizard.
* Associate this to a template inside a layer using the
* Sequence of Panels extra property.
* Create one or more panels from template as needed too.
*
* @author tomaso
*/
public class JavaScriptIterator implements TemplateWizard.Iterator {
// private static final long serialVersionUID = ...L;
// You should define what panels you want to use here:
protected WizardDescriptor.Panel[] createPanels() {
return new WizardDescriptor.Panel[] {
// keep the default 2nd panel:
wiz.targetChooser(),
};
}
// And the list of step names:
protected String[] createSteps() {
return new String[] {
null,
};
}
private DataFolder checkTarget(DataFolder folder) {
FileObject fo = folder.getPrimaryFile();
try {
FileSystem fs = fo.getFileSystem();
if (fs instanceof OpenOfficeDocFileSystem && fo.isRoot()) {
FileObject scripts =
fo.getFileObject(OpenOfficeDocFileSystem.SCRIPTS_ROOT);
if (scripts == null)
scripts =
fo.createFolder(OpenOfficeDocFileSystem.SCRIPTS_ROOT);
FileObject javafolder = scripts.getFileObject("java");
if (javafolder == null)
javafolder = scripts.createFolder("java");
DataFolder subfolder = new DataFolder(javafolder);
return subfolder;
}
}
catch (IOException ioe) {
/* do nothing, we will just return the folder we were passed in */
}
return folder;
}
public Set instantiate(TemplateWizard wiz) throws IOException {
String name = wiz.getTargetName();
DataFolder targetFolder = wiz.getTargetFolder();
targetFolder = checkTarget(targetFolder);
DataObject template = wiz.getTemplate();
DataObject result;
if (name == null) {
// Default name.
result = template.createFromTemplate(targetFolder);
} else {
result = template.createFromTemplate(targetFolder, name);
}
FileObject tmp = result.getPrimaryFile();
if (tmp.getExt().equals("java")) {
try {
PackageRemover.removeDeclaration(FileUtil.toFile(tmp));
}
catch (IOException ioe) {
NotifyDescriptor d = new NotifyDescriptor.Message(
"Error removing package declaration from file: " +
tmp.getNameExt() +
". You should manually remove this declaration " +
"before building the Parcel Recipe");
TopManager.getDefault().notify(d);
}
}
return Collections.singleton(result);
}
// --- The rest probably does not need to be touched. ---
private transient int index;
private transient WizardDescriptor.Panel[] panels;
private transient TemplateWizard wiz;
// You can keep a reference to the TemplateWizard which can
// provide various kinds of useful information such as
// the currently selected target name.
// Also the panels will receive wiz as their "settings" object.
public void initialize(TemplateWizard wiz) {
this.wiz = wiz;
index = 0;
panels = createPanels();
// Make sure list of steps is accurate.
String[] steps = createSteps();
for (int i = 0; i < panels.length; i++) {
Component c = panels[i].getComponent();
if (steps[i] == null) {
// Default step name to component name of panel.
// Mainly useful for getting the name of the target
// chooser to appear in the list of steps.
steps[i] = c.getName();
}
if (c instanceof JComponent) { // assume Swing components
JComponent jc = (JComponent)c;
// Step #.
jc.putClientProperty("WizardPanel_contentSelectedIndex", new Integer(i)); // NOI18N
// Step name (actually the whole list for reference).
jc.putClientProperty("WizardPanel_contentData", steps); // NOI18N
}
}
}
public void uninitialize(TemplateWizard wiz) {
this.wiz = null;
panels = null;
}
// --- WizardDescriptor.Iterator METHODS: ---
// Note that this is very similar to WizardDescriptor.Iterator, but with a
// few more options for customization. If you e.g. want to make panels appear
// or disappear dynamically, go ahead.
public String name() {
return "";
}
public boolean hasNext() {
return index < panels.length - 1;
}
public boolean hasPrevious() {
return index > 0;
}
public void nextPanel() {
if (!hasNext()) throw new NoSuchElementException();
index++;
}
public void previousPanel() {
if (!hasPrevious()) throw new NoSuchElementException();
index--;
}
public WizardDescriptor.Panel current() {
return panels[index];
}
// If nothing unusual changes in the middle of the wizard, simply:
public final void addChangeListener(ChangeListener l) {}
public final void removeChangeListener(ChangeListener l) {}
// If something changes dynamically (besides moving between panels),
// e.g. the number of panels changes in response to user input, then
// uncomment the following and call when needed:
// fireChangeEvent();
/*
private transient Set listeners = new HashSet(1); // Set<ChangeListener>
public final void addChangeListener(ChangeListener l) {
synchronized(listeners) {
listeners.add(l);
}
}
public final void removeChangeListener(ChangeListener l) {
synchronized(listeners) {
listeners.remove(l);
}
}
protected final void fireChangeEvent() {
Iterator it;
synchronized (listeners) {
it = new HashSet(listeners).iterator();
}
ChangeEvent ev = new ChangeEvent(this);
while (it.hasNext()) {
((ChangeListener)it.next()).stateChanged(ev);
}
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
listeners = new HashSet(1);
}
*/
}

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: ParcelContentsIterator.java,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: toconnor $ $Date: 2002-11-13 17:44:40 $
* last change: $Author: toconnor $ $Date: 2003-01-16 17:51:45 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -84,6 +84,7 @@ import org.openide.util.NbBundle;
import org.openide.filesystems.*;
import org.openoffice.idesupport.zip.ParcelZipper;
import org.openoffice.netbeans.modules.office.loader.ParcelFolder;
import org.openoffice.netbeans.modules.office.filesystem.OpenOfficeDocFileSystem;
import org.openoffice.netbeans.modules.office.utils.PackageRemover;
@@ -102,11 +103,14 @@ public class ParcelContentsIterator implements TemplateWizard.Iterator {
// You should define what panels you want to use here:
public static final String PROP_LANGUAGE =
ParcelFolder.LANGUAGE_ATTRIBUTE;
protected WizardDescriptor.Panel[] createPanels() {
return new WizardDescriptor.Panel[] {
// keep the default 2nd panel:
wiz.targetChooser(),
// new ParcelDescriptorPanel(),
// wiz.targetChooser(),
new ParcelPropertiesPanel(),
};
}
@@ -114,8 +118,8 @@ public class ParcelContentsIterator implements TemplateWizard.Iterator {
protected String[] createSteps() {
return new String[] {
null,
// "Parcel Properties",
// null,
"Parcel Properties",
};
}
@@ -146,11 +150,21 @@ public class ParcelContentsIterator implements TemplateWizard.Iterator {
return folder;
}
public Set instantiate(TemplateWizard wiz) throws IOException/*, IllegalStateException*/ {
public Set instantiate(TemplateWizard wiz) throws IOException {
String name = wiz.getTargetName();
DataFolder targetFolder = wiz.getTargetFolder();
targetFolder = checkTarget(targetFolder);
String sourceFile = "Templates/OfficeScripting/EmptyScript/Empty";
String language = (String)wiz.getProperty(PROP_LANGUAGE);
if (language.toLowerCase().equals("java"))
sourceFile += ".java";
else if (language.toLowerCase().equals("beanshell"))
sourceFile += ".bsh";
else
sourceFile = null;
DataObject template = wiz.getTemplate();
DataObject result;
if (name == null) {
@@ -160,46 +174,40 @@ public class ParcelContentsIterator implements TemplateWizard.Iterator {
result = template.createFromTemplate(targetFolder, name);
}
FileObject contents = result.getPrimaryFile().getFileObject(ParcelZipper.CONTENTS_DIRNAME);
DataFolder parent = DataFolder.findFolder(contents);
DataObject[] objs = parent.getChildren();
FileObject recipe = result.getPrimaryFile();
recipe.setAttribute(ParcelFolder.LANGUAGE_ATTRIBUTE, language);
System.out.println("Called setAttribute from wizard: " + language);
for (int i = 0; i < objs.length; i++) {
FileObject fo = objs[i].getPrimaryFile();
if (fo.getExt().equals("java")) {
try {
PackageRemover.removeDeclaration(FileUtil.toFile(fo));
}
catch (IOException ioe) {
NotifyDescriptor d = new NotifyDescriptor.Message(
"Error removing package declaration from file: " +
fo.getNameExt() +
". You should manually remove this declaration before " +
"building the Parcel Recipe");
TopManager.getDefault().notify(d);
FileObject contents =
recipe.getFileObject(ParcelZipper.CONTENTS_DIRNAME);
if (contents != null) {
DataFolder parent = DataFolder.findFolder(contents);
FileSystem fs = Repository.getDefault().getDefaultFileSystem();
DataObject dObj = DataObject.find(fs.findResource(sourceFile));
dObj.createFromTemplate(parent);
DataObject[] objs = parent.getChildren();
for (int i = 0; i < objs.length; i++) {
FileObject fo = objs[i].getPrimaryFile();
if (fo.getExt().equals("java")) {
try {
PackageRemover.removeDeclaration(FileUtil.toFile(fo));
}
catch (IOException ioe) {
NotifyDescriptor d = new NotifyDescriptor.Message(
"Error removing package declaration from file: " +
fo.getNameExt() +
". You should manually remove this declaration " +
"before building the Parcel Recipe");
TopManager.getDefault().notify(d);
}
}
}
}
/* Uncomment this code to open the Parcel Descriptor file in an editor
* window
DataFolder parent = DataFolder.findFolder(result.getPrimaryFile());
DataObject[] objs = parent.getChildren();
if (objs != null) {
DataObject descriptor = objs[0];
OpenCookie open = (OpenCookie)descriptor.getCookie(OpenCookie.class);
if (open != null) {
open.open();
}
} */
/* Uncomment to open the Parcel in a new Explorer window
Node node = parent.getNodeDelegate();
TopManager.getDefault().getNodeOperation().explore(node);
*/
return Collections.singleton(result);
}

View File

@@ -0,0 +1,117 @@
/*
* ParcelPropertiesPanel.java
*
* Created on January 15, 2003
*/
package org.openoffice.netbeans.modules.office.wizard;
import java.awt.Component;
import java.net.URL;
import java.net.MalformedURLException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.openide.WizardDescriptor;
import org.openide.loaders.TemplateWizard;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
/** A single panel descriptor for a wizard.
* You probably want to make a wizard iterator to hold it.
*
* @author tomaso
*/
public class ParcelPropertiesPanel implements WizardDescriptor.FinishPanel {
/** The visual component that displays this panel.
* If you need to access the component from this class,
* just use getComponent().
*/
private ParcelPropertiesVisualPanel component;
/** Create the wizard panel descriptor. */
public ParcelPropertiesPanel() {
}
// Get the visual component for the panel. In this template, the component
// is kept separate. This can be more efficient: if the wizard is created
// but never displayed, or not all panels are displayed, it is better to
// create only those which really need to be visible.
public Component getComponent() {
if (component == null) {
component = new ParcelPropertiesVisualPanel(this);
}
return component;
}
public HelpCtx getHelp() {
// Show no Help button for this panel:
return HelpCtx.DEFAULT_HELP;
// If you have context help:
// return new HelpCtx(ParcelPropertiesPanel.class);
}
public boolean isValid() {
// If it is always OK to press Next or Finish, then:
return true;
// If it depends on some condition (form filled out...), then:
// return someCondition();
// and when this condition changes (last form field filled in...) then:
// fireChangeEvent();
// and uncomment the complicated stuff below.
}
public final void addChangeListener(ChangeListener l) {}
public final void removeChangeListener(ChangeListener l) {}
/*
private final Set listeners = new HashSet(1); // Set<ChangeListener>
public final void addChangeListener(ChangeListener l) {
synchronized (listeners) {
listeners.add(l);
}
}
public final void removeChangeListener(ChangeListener l) {
synchronized (listeners) {
listeners.remove(l);
}
}
protected final void fireChangeEvent() {
Iterator it;
synchronized (listeners) {
it = new HashSet(listeners).iterator();
}
ChangeEvent ev = new ChangeEvent(this);
while (it.hasNext()) {
((ChangeListener)it.next()).stateChanged(ev);
}
}
*/
public void setName(String name) {
this.name = name;
}
public void setLanguage(String language) {
this.language = language;
}
private String language = "Java";
private String name = null;
// You can use a settings object to keep track of state.
// Normally the settings object will be the WizardDescriptor,
// so you can use WizardDescriptor.getProperty & putProperty
// to store information entered by the user.
public void readSettings(Object settings) {
}
public void storeSettings(Object settings) {
TemplateWizard wiz = (TemplateWizard)settings;
wiz.setTargetName(name);
wiz.putProperty(ParcelContentsIterator.PROP_LANGUAGE, language);
}
}

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.0" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<AuxValues>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,75,0,0,1,-112"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" value="Parcel Recipe Name"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="12" insetsLeft="12" insetsBottom="11" insetsRight="2" anchor="17" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="recipeName">
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="recipeNameActionPerformed"/>
<EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="recipeNameFocusGained"/>
<EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="recipeNameFocusLost"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="0" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="12" insetsLeft="0" insetsBottom="11" insetsRight="11" anchor="10" weightX="1.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" value="Initial Script Language"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="12" insetsBottom="11" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="languagesComboBox">
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="languagesComboBoxActionPerformed"/>
</Events>
<AuxValues>
<AuxValue name="JavaCodeGenerator_InitCodePre" type="java.lang.String" value=""/>
<AuxValue name="JavaCodeGenerator_CreateCodePre" type="java.lang.String" value=""/>
<AuxValue name="JavaCodeGenerator_SerializeTo" type="java.lang.String" value=""/>
<AuxValue name="JavaCodeGenerator_CodeGeneration" type="java.lang.Integer" value="0"/>
<AuxValue name="JavaCodeGenerator_CreateCodePost" type="java.lang.String" value=""/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="11" insetsRight="11" anchor="17" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Container class="javax.swing.JPanel" name="jPanel1">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="3" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
</Container>
</SubComponents>
</Form>

View File

@@ -0,0 +1,156 @@
/*
* ParcelPropertiesVisualPanel.java
*
* Created on January 15, 2003
*/
package org.openoffice.netbeans.modules.office.wizard;
import org.openide.util.NbBundle;
/** A single panel for a wizard - the GUI portion.
*
* @author tomaso
*/
public class ParcelPropertiesVisualPanel extends javax.swing.JPanel {
/** The wizard panel descriptor associated with this GUI panel.
* If you need to fire state changes or something similar, you can
* use this handle to do so.
*/
private final ParcelPropertiesPanel panel;
/** Create the wizard panel and set up some basic properties. */
public ParcelPropertiesVisualPanel(ParcelPropertiesPanel panel) {
this.panel = panel;
initComponents();
languagesComboBox.addItem("Java");
languagesComboBox.addItem("BeanShell");
// Provide a name in the title bar.
setName(NbBundle.getMessage(ParcelPropertiesVisualPanel.class, "TITLE_WizardPanel"));
/*
// Optional: provide a special description for this pane.
// You must have turned on WizardDescriptor.WizardPanel_helpDisplayed
// (see descriptor in standard iterator template for an example of this).
try {
putClientProperty("WizardPanel_helpURL", // NOI18N
new URL("nbresloc:/org/openoffice/netbeans/modules/office/wizard/ParcelPropertiesVisualHelp.html")); // NOI18N
} catch (MalformedURLException mfue) {
throw new IllegalStateException(mfue.toString());
}
*/
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
recipeName = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
languagesComboBox = new javax.swing.JComboBox();
jPanel1 = new javax.swing.JPanel();
setLayout(new java.awt.GridBagLayout());
jLabel1.setText("Parcel Recipe Name");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(12, 12, 11, 2);
add(jLabel1, gridBagConstraints);
recipeName.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
recipeNameActionPerformed(evt);
}
});
recipeName.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
recipeNameFocusGained(evt);
}
public void focusLost(java.awt.event.FocusEvent evt) {
recipeNameFocusLost(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 11, 11);
add(recipeName, gridBagConstraints);
jLabel2.setText("Initial Script Language");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 12, 11, 12);
add(jLabel2, gridBagConstraints);
languagesComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
languagesComboBoxActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
add(languagesComboBox, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
add(jPanel1, gridBagConstraints);
}//GEN-END:initComponents
private void recipeNameFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_recipeNameFocusGained
recipeName.selectAll();
}//GEN-LAST:event_recipeNameFocusGained
private void recipeNameFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_recipeNameFocusLost
changeName();
}//GEN-LAST:event_recipeNameFocusLost
private void languagesComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_languagesComboBoxActionPerformed
String language = (String)languagesComboBox.getSelectedItem();
panel.setLanguage(language);
}//GEN-LAST:event_languagesComboBoxActionPerformed
private void recipeNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_recipeNameActionPerformed
changeName();
}//GEN-LAST:event_recipeNameActionPerformed
private void changeName() {
String name = recipeName.getText().trim();
if (name.equals(""))
name = null;
panel.setName(name);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField recipeName;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JComboBox languagesComboBox;
// End of variables declaration//GEN-END:variables
}