Return-Path: X-Original-To: apmail-incubator-ooo-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-ooo-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 92B059E77 for ; Fri, 27 Jan 2012 01:31:54 +0000 (UTC) Received: (qmail 44195 invoked by uid 500); 27 Jan 2012 01:31:54 -0000 Delivered-To: apmail-incubator-ooo-commits-archive@incubator.apache.org Received: (qmail 44162 invoked by uid 500); 27 Jan 2012 01:31:54 -0000 Mailing-List: contact ooo-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ooo-dev@incubator.apache.org Delivered-To: mailing list ooo-commits@incubator.apache.org Received: (qmail 44155 invoked by uid 99); 27 Jan 2012 01:31:54 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Jan 2012 01:31:54 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Jan 2012 01:31:35 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 6B4FF2388C35; Fri, 27 Jan 2012 01:30:25 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1236486 [19/43] - in /incubator/ooo/devtools/netbeansintegration: ./ build/ build/public-package-jars/ javahelp/ javahelp/org/ javahelp/org/openoffice/ javahelp/org/openoffice/extensions/ javahelp/org/openoffice/extensions/docs/ javahelp/o... Date: Fri, 27 Jan 2012 01:29:58 -0000 To: ooo-commits@incubator.apache.org From: arist@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120127013025.6B4FF2388C35@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual3Menubar.java URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual3Menubar.java?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual3Menubar.java (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual3Menubar.java Fri Jan 27 01:29:33 2012 @@ -0,0 +1,453 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: AddOnPanelVisual3Menubar.java,v $ + * + * $Revision: 1.8 $ + * + * last change: $Author: sg $ $Date: 2008/08/18 15:59:23 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ + +package org.openoffice.extensions.projecttemplates.addon; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyVetoException; +import javax.swing.ActionMap; +import javax.swing.ComboBoxModel; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JPanel; +import javax.swing.tree.TreeSelectionModel; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.explorer.ExplorerManager; +import org.openide.explorer.ExplorerUtils; +import org.openide.explorer.propertysheet.PropertySheet; +import org.openide.explorer.view.TreeTableView; +import org.openide.nodes.Node; +import org.openide.util.Lookup; +import org.openide.util.NbBundle; +import org.openoffice.extensions.projecttemplates.addon.datamodel.AddOn; +import org.openoffice.extensions.projecttemplates.addon.datamodel.node.AddOnChildren; +import org.openoffice.extensions.projecttemplates.addon.datamodel.node.AddOnNode; +import org.openoffice.extensions.projecttemplates.addon.datamodel.node.AddOnTreeCreator; +import org.openoffice.extensions.projecttemplates.addon.dialogs.AddDeletedCommandPanel; +import org.openoffice.extensions.util.datamodel.PropertyContainer; +import org.openoffice.extensions.util.datamodel.localization.LanguageDefinition; +import org.openoffice.extensions.util.datamodel.properties.LocalizedOpenOfficeOrgProperty; +import org.openoffice.extensions.util.datamodel.NbNodeObject; +import org.openoffice.extensions.util.LogWriter; +import org.openoffice.extensions.util.datamodel.actions.BaseAction; + +public class AddOnPanelVisual3Menubar extends JPanel implements + ExplorerManager.Provider, PropertyChangeListener { + + public static final String PROP_PROJECT_NAME = "descFirst"; // NOI18N + + private ExplorerManager manager = new ExplorerManager(); + private PropertySheet propSheet; + private Lookup lookup; + + private AddOnActions actions; + private AddOnWizardPanel3Menubar panel; + + private String[] tags; + private NbNodeObject rootAddOn; + + /** Creates new form PanelProjectLocationVisual */ + public AddOnPanelVisual3Menubar(AddOnWizardPanel3Menubar panel) { + initComponents(); + + this.panel = panel; + + TreeTableView view = (TreeTableView)jScrollPane1; +// view.setName("AddOn"); // NOI18N + view.setRootVisible(false); + view.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + + // for keyboard actions enable this: handle actions must be done, too + ActionMap map = getActionMap(); +// map.put("delete", ExplorerUtils.actionDelete(manager, true)); // NOI18N + + propSheet = (PropertySheet)jPanel1; + + actions = new AddOnActions(manager, panel); + + manager.addPropertyChangeListener(this); + lookup = ExplorerUtils.createLookup(manager, map); + } + + public ExplorerManager getExplorerManager() { + return manager; + } + + public Lookup getLookup() { + return lookup; + } + + /** 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. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + jSplitPane1 = new javax.swing.JSplitPane(); + jPanel1 = new PropertySheet(); + jScrollPane1 = new TreeTableView(); + addMenuButton = new javax.swing.JButton(); + addSeparatorButton = new javax.swing.JButton(); + upButton = new javax.swing.JButton(); + downButton = new javax.swing.JButton(); + removeCommandButton = new javax.swing.JButton(); + addCommandsButton = new javax.swing.JButton(); + previewComboBox = new javax.swing.JComboBox(); + jLabel1 = new javax.swing.JLabel(); + + setAutoscrolls(true); + setRequestFocusEnabled(false); + jSplitPane1.setDividerLocation(200); + jSplitPane1.setForeground(java.awt.Color.white); + jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jPanel1.setMinimumSize(new java.awt.Dimension(5, 10)); + jPanel1.setName("properties"); + jPanel1.setPreferredSize(new java.awt.Dimension(5, 10)); + jSplitPane1.setRightComponent(jPanel1); + + jScrollPane1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jScrollPane1.setFocusTraversalPolicy(getFocusTraversalPolicy()); + jScrollPane1.setMinimumSize(new java.awt.Dimension(5, 10)); + jScrollPane1.setName("menuStructure"); + jScrollPane1.setPreferredSize(new java.awt.Dimension(5, 10)); + jSplitPane1.setLeftComponent(jScrollPane1); + + org.openide.awt.Mnemonics.setLocalizedText(addMenuButton, NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "LBL_BUTTON_AddSubMenu")); + addMenuButton.setToolTipText(NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "BUTTON_AddSubMenu_Tooltip")); + addMenuButton.setName("addMenu"); + addMenuButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + addMenuButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(addSeparatorButton, NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "LBL_BUTTON_AddSeparator")); + addSeparatorButton.setName("addSeparator"); + addSeparatorButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + addSeparatorButtonActionPerformed(evt); + } + }); + + upButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/openoffice/extensions/projecttemplates/addon/icons/up.gif"))); + upButton.setToolTipText(org.openide.util.NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "LBL_BUTTON_Delete")); + upButton.setName("up"); + upButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + upButtonActionPerformed(evt); + } + }); + + downButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/openoffice/extensions/projecttemplates/addon/icons/down.gif"))); + downButton.setToolTipText(org.openide.util.NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "LBL_BUTTON_Delete")); + downButton.setName("down"); + downButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + downButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(removeCommandButton, NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "LBL_BUTTON_Delete")); + removeCommandButton.setName("delete"); + removeCommandButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + removeCommandButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(addCommandsButton, NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "LBL_BUTTON_AddCommand")); + addCommandsButton.setName("addCommand"); + addCommandsButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + addCommandsButtonActionPerformed(evt); + } + }); + + previewComboBox.setModel(getPreviewModel()); + previewComboBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + previewComboBoxActionPerformed(evt); + } + }); + + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel1.setLabelFor(previewComboBox); + org.openide.awt.Mnemonics.setLocalizedText(jLabel1, NbBundle.getMessage(AddOnPanelVisual3Menubar.class, "LBL_Preview")); + jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); + + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() + .add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(previewComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 350, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 453, Short.MAX_VALUE)) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(addMenuButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE) + .add(addSeparatorButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE) + .add(addCommandsButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE) + .add(removeCommandButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE))) + .add(layout.createSequentialGroup() + .add(46, 46, 46) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(org.jdesktop.layout.GroupLayout.LEADING, downButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 63, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.LEADING, upButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .add(76, 76, 76))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(previewComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 23, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(addMenuButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(addSeparatorButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(addCommandsButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(removeCommandButton) + .add(50, 50, 50) + .add(upButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 31, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(downButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 29, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + .add(jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 449, Short.MAX_VALUE))) + ); + }// //GEN-END:initComponents + + private void previewComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_previewComboBoxActionPerformed + + int index = previewComboBox.getSelectedIndex(); + if (tags != null) { + String context = tags[index]; + AddOnNode rootNode = new AddOnNode(rootAddOn, new AddOnChildren(context, false, false), false, false); + manager.setRootContext(rootNode); + selectFirstLeaf(rootNode); + } + + + }//GEN-LAST:event_previewComboBoxActionPerformed + + private void addCommandsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addCommandsButtonActionPerformed + + AddDeletedCommandPanel.start(actions); + + }//GEN-LAST:event_addCommandsButtonActionPerformed + + private void removeCommandButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeCommandButtonActionPerformed + + actions.toggleVisibility(); + + }//GEN-LAST:event_removeCommandButtonActionPerformed + + private void upButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_upButtonActionPerformed + + actions.moveUp(); + + }//GEN-LAST:event_upButtonActionPerformed + + private void downButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downButtonActionPerformed + + actions.moveDown(); + + }//GEN-LAST:event_downButtonActionPerformed + + private void addSeparatorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addSeparatorButtonActionPerformed + + actions.addSeparatorAction(); + + }//GEN-LAST:event_addSeparatorButtonActionPerformed + + private void addMenuButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addMenuButtonActionPerformed + + actions.addMenuAction(); + + }//GEN-LAST:event_addMenuButtonActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton addCommandsButton; + private javax.swing.JButton addMenuButton; + private javax.swing.JButton addSeparatorButton; + private javax.swing.JButton downButton; + private javax.swing.JLabel jLabel1; + private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JSplitPane jSplitPane1; + private javax.swing.JComboBox previewComboBox; + private javax.swing.JButton removeCommandButton; + private javax.swing.JButton upButton; + // End of variables declaration//GEN-END:variables + + public void addNotify() { + super.addNotify(); + try { + //same problem as in 31086, initial focus on Cancel button + manager.setSelectedNodes(manager.getRootContext().getChildren().getNodes()); + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + } + + boolean valid(WizardDescriptor wizardDescriptor) { + Node node = manager.getRootContext(); + AddOn addon = (AddOn)node.getLookup().lookup(NbNodeObject.class); + NbNodeObject[]commands = addon.getAllCommands(); + if (commands.length == 0) { + String message = NbBundle.getMessage(AddOnWizardIterator.class, "LBL_ErrorMessageOneCommand"); + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); // NOI18N + return false; + } + wizardDescriptor.putProperty("WizardPanel_errorMessage", ""); // NOI18N + return true; + } + + void store(WizardDescriptor d) { // method may be called several times! + Node node = manager.getRootContext(); + // first subnodes are functions + NbNodeObject addOn = (NbNodeObject)node.getLookup().lookup(NbNodeObject.class); + // only one menu as sub object + d.putProperty("AddOnMenu", addOn.getAllSubObjects()[0]); // NOI18N + } + + private String[][] getLocalizedProperties(LocalizedOpenOfficeOrgProperty prop, String defaultValue) { + if (defaultValue == null) defaultValue = ""; // NOI18N + Integer[] indexes = prop.getUsedLanguageIndexes(); + String[][] retValue = new String[2][indexes.length]; + for (int i=0; i 0 && text.charAt(0) != '<' + && text.charAt(text.length() - 1) != '>') { + retValue[1][i] = text; + } + else { + retValue[1][i] = defaultValue; + } + } + return retValue; + } + + void read(WizardDescriptor settings) { + AddOn restepAddOn = (AddOn)settings.getProperty("AddOnMenu"); // NOI18N + AddOn addOn = (AddOn)settings.getProperty("AddOn"); // NOI18N + AddOnNode rootNode = null; + if (restepAddOn == null) { // first creation + rootNode = AddOnTreeCreator.createMenuStructure(addOn); + } + else { // restep through this panel: merge eventual changes from panel before + rootNode = AddOnTreeCreator.restoreMenuStructure(restepAddOn, addOn); + } + rootAddOn = (NbNodeObject)rootNode.getLookup().lookup(NbNodeObject.class); + manager.setRootContext(rootNode); + // deliver the actual actions to the node-actions + rootNode.setActions((BaseAction)actions); + selectFirstLeaf(rootNode); + } + + void validate(WizardDescriptor d) throws WizardValidationException { + // nothing to validate + } + + public void propertyChange(PropertyChangeEvent evt) { + // because of TreeSelectionModel.SINGLE_TREE_SELECTION max. one node is selected + Node[] selectedNodes = manager.getSelectedNodes(); + boolean disableComamnds = true; + if (selectedNodes != null && selectedNodes.length > 0) { + propSheet.setNodes(selectedNodes); + Node node = selectedNodes[0].getParentNode(); + if (node != null) { // is null after a delete + node = node.getParentNode(); // make sure to get parent from top node + } + if (node != null) { + this.removeCommandButton.setEnabled(true); + this.upButton.setEnabled(true); + this.downButton.setEnabled(true); + disableComamnds = false; + } + } + if (disableComamnds) { + this.removeCommandButton.setEnabled(false); + this.upButton.setEnabled(false); + this.downButton.setEnabled(false); + } + panel.fireChangeEvent(); // Notify that the panel changed + } + + private ComboBoxModel getPreviewModel() { + tags = new String[PropertyContainer.PROPERTY_CONTAINER_CONTEXTS.length + 2]; + for (int i = 0; i < PropertyContainer.PROPERTY_CONTAINER_CONTEXTS.length; i++) { + tags[i + 1] = PropertyContainer.PROPERTY_CONTAINER_CONTEXTS[i]; + } + tags[0] = AddOnChildren.ALL; + tags[tags.length - 1] = AddOnChildren.BACK_END; + return new DefaultComboBoxModel(tags); + } + + /** + * Select the first node that is not a menu node, + * thus opening the tree structure untill there + * @param node the starting node + */ + private void selectFirstLeaf(Node node) { + Node[] nodes = node.getChildren().getNodes(); + if (nodes != null && nodes.length > 0) { + selectFirstLeaf(nodes[0]); + } + else { + try { + manager.setSelectedNodes(new Node[]{node}); + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().log(LogWriter.LEVEL_INFO, "Cannot set selected node."); // NOI18N + } + } + } +} Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.form URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.form?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.form (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.form Fri Jan 27 01:29:33 2012 @@ -0,0 +1,215 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.java URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.java?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.java (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnPanelVisual4Toolbar.java Fri Jan 27 01:29:33 2012 @@ -0,0 +1,506 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: AddOnPanelVisual4Toolbar.java,v $ + * + * $Revision: 1.8 $ + * + * last change: $Author: sg $ $Date: 2008/08/18 15:59:24 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ + +package org.openoffice.extensions.projecttemplates.addon; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyVetoException; +import javax.swing.ComboBoxModel; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JPanel; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.explorer.ExplorerManager; +import org.openide.explorer.propertysheet.PropertySheet; +import org.openide.nodes.Node; +import org.openide.util.Lookup; +import org.openide.util.NbBundle; +import org.openoffice.extensions.projecttemplates.addon.datamodel.AddOn; +import org.openoffice.extensions.projecttemplates.addon.datamodel.SeparatorElement; +import org.openoffice.extensions.projecttemplates.addon.datamodel.node.AddOnChildren; +import org.openoffice.extensions.projecttemplates.addon.datamodel.node.AddOnNode; +import org.openoffice.extensions.projecttemplates.addon.datamodel.node.AddOnTreeCreator; +import org.openoffice.extensions.projecttemplates.addon.dialogs.AddDeletedCommandPanel; +import org.openoffice.extensions.util.LogWriter; +import org.openoffice.extensions.util.datamodel.NbNodeObject; +import org.openoffice.extensions.util.datamodel.PropertyContainer; +import org.openoffice.extensions.util.datamodel.properties.UnknownOpenOfficeOrgPropertyException; + +public class AddOnPanelVisual4Toolbar extends JPanel implements + ExplorerManager.Provider, ActionListener { + + public static final String PROP_PROJECT_NAME = "descFirst"; // NOI18N + + private ExplorerManager manager = new ExplorerManager(); + private PropertySheet propSheet; + private Lookup lookup; + + private AddOnActions actions; + private AddOnWizardPanel4Toolbar panel; + private ButtonPanel buttonPanel; + +// private NbNodeObject rootAddOn; + private AddOnNode m_rootAddOnNode; + private Node m_SelectedNode; + + private String[] tags; + + /** Creates new form PanelProjectLocationVisual */ + public AddOnPanelVisual4Toolbar(AddOnWizardPanel4Toolbar panel) { + buttonPanel = new ButtonPanel(this); + initComponents(); + + this.panel = panel; + + actions = new AddOnActions(manager, panel); + propSheet = (PropertySheet)jPanel1; + + // for keyboard actions enable this: handle actions must be done, too +// ActionMap map = getActionMap(); +// map.put("delete", ExplorerUtils.actionDelete(manager, true)); // NOI18N +// manager.addPropertyChangeListener(this); +// lookup = ExplorerUtils.createLookup(manager, map); + } + + public Lookup getLookup() { + return lookup; + } + + /** 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. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + deleteButton = new javax.swing.JButton(); + addSeparatorButton = new javax.swing.JButton(); + leftButton = new javax.swing.JButton(); + rightButton = new javax.swing.JButton(); + jSplitPane1 = new javax.swing.JSplitPane(); + jScrollPane1 = new javax.swing.JScrollPane(); + jScrollPane1.setViewportView(buttonPanel); + jPanel1 = new PropertySheet(); + addCommandButton = new javax.swing.JButton(); + previewComboBox = new javax.swing.JComboBox(); + jLabel1 = new javax.swing.JLabel(); + + setAutoscrolls(true); + setRequestFocusEnabled(false); + org.openide.awt.Mnemonics.setLocalizedText(deleteButton, NbBundle.getMessage(AddOnPanelVisual4Toolbar.class, "LBL_BUTTON_Delete")); + deleteButton.setActionCommand("Delete"); + deleteButton.setName("delete"); + deleteButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + deleteButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(addSeparatorButton, NbBundle.getMessage(AddOnPanelVisual4Toolbar.class, "LBL_BUTTON_AddSeparator")); + addSeparatorButton.setName("addSeparator"); + addSeparatorButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + addSeparatorButtonActionPerformed(evt); + } + }); + + leftButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/openoffice/extensions/projecttemplates/addon/icons/back.gif"))); + leftButton.setName("left"); + leftButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + leftButtonActionPerformed(evt); + } + }); + + rightButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/openoffice/extensions/projecttemplates/addon/icons/forward.gif"))); + rightButton.setMaximumSize(new java.awt.Dimension(65, 28)); + rightButton.setMinimumSize(new java.awt.Dimension(65, 28)); + rightButton.setName("right"); + rightButton.setPreferredSize(new java.awt.Dimension(65, 28)); + rightButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + rightButtonActionPerformed(evt); + } + }); + + jSplitPane1.setBackground(new java.awt.Color(255, 255, 255)); + jSplitPane1.setDividerLocation(60); + jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); + jSplitPane1.setOpaque(false); + jScrollPane1.setBackground(new java.awt.Color(255, 255, 255)); + jScrollPane1.setName("toolbar"); + jSplitPane1.setLeftComponent(jScrollPane1); + + jPanel1.setName("properties"); + jSplitPane1.setBottomComponent(jPanel1); + + org.openide.awt.Mnemonics.setLocalizedText(addCommandButton, NbBundle.getMessage(AddOnPanelVisual4Toolbar.class, "LBL_BUTTON_AddCommand")); + addCommandButton.setName("addCommand"); + addCommandButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + addCommandButtonActionPerformed(evt); + } + }); + + previewComboBox.setModel(getPreviewModel()); + previewComboBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + previewComboBoxActionPerformed(evt); + } + }); + + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel1.setLabelFor(previewComboBox); + org.openide.awt.Mnemonics.setLocalizedText(jLabel1, NbBundle.getMessage(AddOnPanelVisual4Toolbar.class, "LBL_Preview")); + + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 88, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(previewComboBox, 0, 380, Short.MAX_VALUE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)) + .add(jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE)) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(addSeparatorButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) + .add(deleteButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) + .add(addCommandButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE))) + .add(layout.createSequentialGroup() + .add(28, 28, 28) + .add(leftButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 40, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(rightButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 40, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel1) + .add(previewComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(addSeparatorButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(addCommandButton) + .add(4, 4, 4) + .add(deleteButton) + .add(35, 35, 35) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(leftButton) + .add(rightButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 39, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE)) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void previewComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_previewComboBoxActionPerformed + + int index = previewComboBox.getSelectedIndex(); + if (tags != null) { + String context = tags[index]; + NbNodeObject aNode = (NbNodeObject)m_rootAddOnNode.getLookup().lookup(NbNodeObject.class); + AddOnNode rootNode = new AddOnNode(aNode, new AddOnChildren(context, false, true), false, true); + manager.setRootContext(rootNode); + try { + buttonPanel.buildNewList(); + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + m_SelectedNode = null; + updateButtonAndSheet(); + } + + }//GEN-LAST:event_previewComboBoxActionPerformed + + private void addCommandButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addCommandButtonActionPerformed + + try { + if (m_SelectedNode == null) { + manager.setSelectedNodes(new Node[0]); + } + else { + manager.setSelectedNodes(new Node[]{m_SelectedNode}); + } + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + AddDeletedCommandPanel.start(actions); + try { + buttonPanel.buildNewList(); + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + + }//GEN-LAST:event_addCommandButtonActionPerformed + + private void addSeparatorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addSeparatorButtonActionPerformed + + try { + if (m_SelectedNode != null) { + manager.setSelectedNodes(new Node[]{m_SelectedNode}); + SeparatorElement sep = actions.addSeparatorAction(); + if (sep != null) + sep.setDisplayName(""); // NOI18N + buttonPanel.buildNewList(); + } + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + + }//GEN-LAST:event_addSeparatorButtonActionPerformed + + private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteButtonActionPerformed + + try { + if (m_SelectedNode != null) { + manager.setSelectedNodes(new Node[]{m_SelectedNode}); + actions.toggleVisibility(); + buttonPanel.buildNewList(); + // remove selection after delete + m_SelectedNode = null; + this.updateButtonAndSheet(); + } + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + + }//GEN-LAST:event_deleteButtonActionPerformed + + private void leftButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_leftButtonActionPerformed + + try { + if (m_SelectedNode != null) { + manager.setSelectedNodes(new Node[]{m_SelectedNode}); + NbNodeObject object = (NbNodeObject) + m_SelectedNode.getLookup().lookup(NbNodeObject.class); + String elementName = getElementName(object); + actions.moveUp(); + buttonPanel.buildNewList(); + enableElement(elementName); + } + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + + }//GEN-LAST:event_leftButtonActionPerformed + + private void rightButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rightButtonActionPerformed + + try { + if (m_SelectedNode != null) { + NbNodeObject object = (NbNodeObject) + m_SelectedNode.getLookup().lookup(NbNodeObject.class); + String elementName = getElementName(object); + manager.setSelectedNodes(new Node[]{m_SelectedNode}); + actions.moveDown(); + buttonPanel.buildNewList(); + enableElement(elementName); + } + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + + }//GEN-LAST:event_rightButtonActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton addCommandButton; + private javax.swing.JButton addSeparatorButton; + private javax.swing.JButton deleteButton; + private javax.swing.JLabel jLabel1; + private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JSplitPane jSplitPane1; + private javax.swing.JButton leftButton; + private javax.swing.JComboBox previewComboBox; + private javax.swing.JButton rightButton; + // End of variables declaration//GEN-END:variables + + public void addNotify() { + super.addNotify(); + try { + //same problem as in 31086, initial focus on Cancel button + manager.setSelectedNodes(manager.getRootContext().getChildren().getNodes()); + } catch (PropertyVetoException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + } + + boolean valid(WizardDescriptor wizardDescriptor) { + Node node = manager.getRootContext(); + + AddOn addon = (AddOn)node.getLookup().lookup(NbNodeObject.class); + NbNodeObject[]commands = addon.getAllCommands(); + if (commands.length == 0) { + String message = NbBundle.getMessage(AddOnWizardIterator.class, "LBL_ErrorMessageOneCommand"); + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); // NOI18N + return false; + } + wizardDescriptor.putProperty("WizardPanel_errorMessage", ""); // NOI18N + return true; + } + + void store(WizardDescriptor d) {// method may be called several times! + NbNodeObject addOn = (NbNodeObject)this.m_rootAddOnNode.getLookup().lookup(NbNodeObject.class); + AddOn rootAddon = new AddOn(); + rootAddon.addSetObject("Toolbar", addOn); // NOI18N + // only one menu as sub object + d.putProperty("AddOnToolbar", rootAddon); // NOI18N + } + + void read(WizardDescriptor settings) { + AddOn addOn = (AddOn)settings.getProperty("AddOn"); // NOI18N + AddOn restepAddOn = (AddOn)settings.getProperty("AddOnToolbar"); // NOI18N + if (restepAddOn == null) { // first creation + m_rootAddOnNode = AddOnTreeCreator.createToolbarStructure(addOn); + } + else { // restep through this panel: merge eventual changes from panel before + m_rootAddOnNode = AddOnTreeCreator.restoreToolbarStructure(restepAddOn, addOn); + } + +// this.m_rootAddOnNode = AddOnTreeCreator.createToolbarStructure(addOn); +// rootAddOn = (NbNodeObject)rootAddOnNode.getLookup().lookup(NbNodeObject.class); + + manager.setRootContext(m_rootAddOnNode); + try { + buttonPanel.setManager(manager); + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + + // enable first button in list + Node[] nodes = manager.getRootContext().getChildren().getNodes(); + if (nodes != null && nodes.length > 0) { + m_SelectedNode = nodes[0]; + // should update the selection in the UI, but does not work + buttonPanel.setSelectedButton(0); + } + // UI + updateButtonAndSheet(); + } + + void validate(WizardDescriptor d) throws WizardValidationException { + // nothing to validate + } + + private ComboBoxModel getPreviewModel() { + tags = new String[PropertyContainer.PROPERTY_CONTAINER_CONTEXTS.length + 2]; + for (int i = 0; i < PropertyContainer.PROPERTY_CONTAINER_CONTEXTS.length; i++) { + tags[i + 1] = PropertyContainer.PROPERTY_CONTAINER_CONTEXTS[i]; + } + tags[0] = AddOnChildren.ALL; + tags[tags.length - 1] = AddOnChildren.BACK_END; + return new DefaultComboBoxModel(tags); + } + + public ExplorerManager getExplorerManager() { + return manager; + } + + public void actionPerformed(ActionEvent e) { + String elementName = e.getActionCommand(); + enableElement(elementName); + } + + private void enableElement(String elementName) { + Node[] nodes = manager.getRootContext().getChildren().getNodes(); + m_SelectedNode = null; + for (int i = 0; i < nodes.length; i++) { + NbNodeObject object = (NbNodeObject) + nodes[i].getLookup().lookup(NbNodeObject.class); + String name = getElementName(object); + if (name != null && name.equals(elementName)) { + m_SelectedNode = nodes[i]; + } + } + // UI + updateButtonAndSheet(); + } + + private String getElementName(NbNodeObject element) { + try { + String name = null; + if (element.getType() == NbNodeObject.UI_SEPARATOR_TYPE) { + SeparatorElement sep = (SeparatorElement)element; + name = sep.getName(); + } + else { + PropertyContainer cont = (PropertyContainer)element; + name = cont.getSimpleProperty(cont.PROPERTY_CONTAINER_NAME); + } + return name; + } catch (UnknownOpenOfficeOrgPropertyException ex) { + LogWriter.getLogWriter().printStackTrace(ex); + } + return null; + } + + /** + * update the sheet and enable/diasable buttons + */ + private void updateButtonAndSheet() { + if (m_SelectedNode == null) { + deleteButton.setEnabled(false); + leftButton.setEnabled(false); + rightButton.setEnabled(false); + propSheet.setNodes(new Node[0]); + } + else { + deleteButton.setEnabled(true); + leftButton.setEnabled(true); + rightButton.setEnabled(true); + propSheet.setNodes(new Node[]{m_SelectedNode}); + } + panel.fireChangeEvent(); // Notify that the panel changed + } +} Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnProject.properties URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnProject.properties?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnProject.properties (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnProject.properties Fri Jan 27 01:29:33 2012 @@ -0,0 +1,41 @@ +# Sun Public License Notice +# +# The contents of this file are subject to the Sun Public License +# Version 1.0 (the "License"). You may not use this file except in +# compliance with the License. A copy of the License is available at +# http://www.sun.com/ +# +# The Original Code is NetBeans. The Initial Developer of the Original +# Code is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun +# Microsystems, Inc. All Rights Reserved. + +# Properties file containing substitutions for file paths and content for the +# basic UNO client application + +# The following special tokens are supported in values: +# %UserName% - substitute the user name as determined by system property +# %ApplicationName% - the user entered display name of the application ( +# human readable, may contain spaces, etc.) +# %UnoPackagee% - the package name the user entered in the wizard +# %UnoPackagePath% - the package name, but with /'s instead of .'s + +__UnoPackage__=%UnoPackage% +#__UnoClientMain__=%UnoClientMain% +__ProjectName__=%ProjectName% +__ProjectDir__=%ProjectName% +__TimeStamp__=%TimeStamp% +__UserName__=%UserName% + +__StartupOptions__= + +__BuildUnoVersion__=%BuildUnoVersion% + +__PlatformBinDir__=%PlatformBinDir% +__RegistrationClass__=%RegistrationClass% +__CentralRegistrationClass__=%CentralRegistrationClass% + +__OfficeLibrary__=%OfficeLibrary% +__OfficePath__=%OfficePath% +__SdkPath__=%SdkPath% + + Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardIterator.java URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardIterator.java?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardIterator.java (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardIterator.java Fri Jan 27 01:29:33 2012 @@ -0,0 +1,250 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: AddOnWizardIterator.java,v $ + * + * $Revision: 1.7 $ + * + * last change: $Author: sg $ $Date: 2007/08/15 13:45:14 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ +package org.openoffice.extensions.projecttemplates.addon; + +import java.awt.Component; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.text.MessageFormat; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import javax.swing.JComponent; +import javax.swing.event.ChangeListener; +import org.netbeans.api.project.ProjectManager; +import org.netbeans.spi.project.ui.support.ProjectChooser; +import org.openide.WizardDescriptor; +import org.openide.filesystems.FileLock; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.util.NbBundle; +import org.openoffice.extensions.config.ConfigurationValidator; +import org.openoffice.extensions.projecttemplates.actions.panel.DescriptionXmlHandler; +import org.openoffice.extensions.util.ProjectCreator; + +public class AddOnWizardIterator implements WizardDescriptor.InstantiatingIterator { + + public static final int ALL_PANELS = 0; + public static final int MENU_PANEL = 2; + public static final int TOOLBAR_PANEL = 3; + + private int index; + private WizardDescriptor.Panel[] panels; + private WizardDescriptor.Panel[] panelCache; + private WizardDescriptor wiz; + private HashSetlisteners; + + public AddOnWizardIterator() { + listeners = new HashSet(); + } + + public static AddOnWizardIterator createIterator() { + return new AddOnWizardIterator(); + } + + private void createPanelCache() { + panelCache = new WizardDescriptor.Panel[] { + new AddOnWizardPanel1Project(this), + new AddOnWizardPanel2Description(), + new AddOnWizardPanel3Menubar(), + new AddOnWizardPanel4Toolbar(), + }; + String[] steps = createSteps(); + int stepIndex = 0; + for (int i = 0; i < panelCache.length; i++) { + Component c = panelCache[i].getComponent(); + JComponent jc = (JComponent) c; + // Step #. + jc.putClientProperty("WizardPanel_contentSelectedIndex", new Integer(stepIndex)); // NOI18N + if (stepIndex < panelCache.length - 2) { + stepIndex++; + } + // Step name (actually the whole list for reference). + jc.putClientProperty("WizardPanel_contentData", steps); // NOI18N + } + } + + private void createPanels(int panelID) { + switch(panelID) { + case MENU_PANEL: + panels = new WizardDescriptor.Panel[] { + panelCache[0], panelCache[1], panelCache[2] + }; + break; + case TOOLBAR_PANEL: + panels = new WizardDescriptor.Panel[] { + panelCache[0], panelCache[1], panelCache[3], + }; + break; + default: + panels = new WizardDescriptor.Panel[] { + panelCache[0], panelCache[1], panelCache[2], panelCache[3] + }; + } + } + + private String[] createSteps() { + return new String[] { + NbBundle.getMessage(AddOnWizardIterator.class, "LBL_CreateProjectStep"), + NbBundle.getMessage(AddOnWizardIterator.class, "LBL_UIProjectStep"), + NbBundle.getMessage(AddOnWizardIterator.class, "LBL_UIProject"), + }; + } + + void updatePanelSteps(int panelID) { + // allow editing of the panel steps only in first panel! + if (index == 0) { + createPanels(panelID); + } + } + + public Set instantiate() throws IOException { + Set resultSet = new LinkedHashSet(); + File dirF = FileUtil.normalizeFile((File) wiz.getProperty("projdir")); // NOI18N + dirF.mkdirs(); + + FileObject dir = FileUtil.toFileObject(dirF); + ProjectCreator creator = new ProjectCreator(dirF, wiz); + creator.createAddon(); + // create initial description.xml + DescriptionXmlHandler dXml = new DescriptionXmlHandler(dir); + dXml.writeDescriptionXml(); + + // Always open top dir as a project: + resultSet.add(dir); + // Look for nested projects to open as well: + Enumeration e = dir.getFolders(true); + while (e.hasMoreElements()) { + FileObject subfolder = (FileObject) e.nextElement(); + if (ProjectManager.getDefault().isProject(subfolder)) { + resultSet.add(subfolder); + } + } + + File parent = dirF.getParentFile(); + if (parent != null && parent.exists()) { + ProjectChooser.setProjectsFolder(parent); + } + + return resultSet; + } + + public void initialize(WizardDescriptor wiz) { + ConfigurationValidator.validateSettings(); + this.wiz = wiz; + index = 0; + createPanelCache(); + createPanels(ALL_PANELS); + } + + public void uninitialize(WizardDescriptor wiz) { + this.wiz.putProperty("projdir",null); // NOI18N + this.wiz.putProperty("name",null); // NOI18N + this.wiz = null; + panels = null; + } + + public String name() { + return MessageFormat.format("{0} of {1}", + new Object[] {new Integer(index + 1), new Integer(panels.length)}); // NOI18N + } + + 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]; + } + + public final void addChangeListener(ChangeListener l) { + listeners.add(l); + } + public final void removeChangeListener(ChangeListener l) { + listeners.remove(l); + } + + private static void unZipFile(InputStream source, FileObject projectRoot) throws IOException { + try { + ZipInputStream str = new ZipInputStream(source); + ZipEntry entry; + while ((entry = str.getNextEntry()) != null) { + if (entry.isDirectory()) { + FileUtil.createFolder(projectRoot, entry.getName()); + } else { + FileObject fo = FileUtil.createData(projectRoot, entry.getName()); + FileLock lock = fo.lock(); + try { + OutputStream out = fo.getOutputStream(lock); + try { + FileUtil.copy(str, out); + } finally { + out.close(); + } + } finally { + lock.releaseLock(); + } + } + } + } finally { + source.close(); + } + } + +} Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel1Project.java URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel1Project.java?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel1Project.java (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel1Project.java Fri Jan 27 01:29:33 2012 @@ -0,0 +1,125 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: AddOnWizardPanel1Project.java,v $ + * + * $Revision: 1.7 $ + * + * last change: $Author: sg $ $Date: 2008/10/07 10:18:26 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ +package org.openoffice.extensions.projecttemplates.addon; + +import java.awt.Component; +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.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +public class AddOnWizardPanel1Project implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel { + + private WizardDescriptor wizardDescriptor; + private AddOnPanelVisual1Project component; + private AddOnWizardIterator addonIt; + + /** Creates a new instance of templateWizardPanel */ + public AddOnWizardPanel1Project(AddOnWizardIterator it) { + addonIt = it; + } + + public Component getComponent() { + if (component == null) { + component = new AddOnPanelVisual1Project(this); + component.setName(NbBundle.getMessage(AddOnWizardPanel1Project.class, "LBL_CreateProjectStep")); + } + return component; + } + + public HelpCtx getHelp() { + return new HelpCtx("org.openoffice.extensions.working.with.addons"); // NOI18N + } + + protected void updatePanelSteps(int panelID) { + addonIt.updatePanelSteps(panelID); + } + + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet(1); + 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 readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + component.read(wizardDescriptor); + } + + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + public boolean isFinishPanel() { + return false; + } + + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } + +} Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel2Description.java URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel2Description.java?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel2Description.java (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel2Description.java Fri Jan 27 01:29:33 2012 @@ -0,0 +1,120 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: AddOnWizardPanel2Description.java,v $ + * + * $Revision: 1.4 $ + * + * last change: $Author: sg $ $Date: 2007/05/03 09:53:36 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ + +package org.openoffice.extensions.projecttemplates.addon; + +import java.awt.Component; +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.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +public class AddOnWizardPanel2Description implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel, AddOnActions.ActionPanel { + + private WizardDescriptor wizardDescriptor; + private AddOnPanelVisual2Description component; + + /** Creates a new instance of templateWizardPanel */ + public AddOnWizardPanel2Description() { + } + + public Component getComponent() { + if (component == null) { + component = new AddOnPanelVisual2Description(this); + component.setName(NbBundle.getMessage(AddOnWizardIterator.class, "LBL_AddOnEditor")); + } + return component; + } + + public HelpCtx getHelp() { + return new HelpCtx("org.openoffice.extensions.working.with.addons"); // NOI18N + } + + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet(1); + public final void addChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.add(l); + } + } + public final void removeChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.remove(l); + } + } + public 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 readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + component.read(wizardDescriptor); + } + + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + public boolean isFinishPanel() { + return false; + } + + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } + +} Added: incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel3Menubar.java URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel3Menubar.java?rev=1236486&view=auto ============================================================================== --- incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel3Menubar.java (added) +++ incubator/ooo/devtools/netbeansintegration/src/org/openoffice/extensions/projecttemplates/addon/AddOnWizardPanel3Menubar.java Fri Jan 27 01:29:33 2012 @@ -0,0 +1,124 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: AddOnWizardPanel3Menubar.java,v $ + * + * $Revision: 1.3 $ + * + * last change: $Author: sg $ $Date: 2007/05/03 09:53:36 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ + +package org.openoffice.extensions.projecttemplates.addon; + +import java.awt.Component; +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.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +public class AddOnWizardPanel3Menubar implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel, AddOnActions.ActionPanel { + + private WizardDescriptor wizardDescriptor; + private AddOnPanelVisual3Menubar component; + private boolean isFinshablePanel; + + /** Creates a new instance of templateWizardPanel */ + public AddOnWizardPanel3Menubar() { + } + + public Component getComponent() { + if (component == null) { + component = new AddOnPanelVisual3Menubar(this); + component.setName(NbBundle.getMessage(AddOnWizardIterator.class, "LBL_AddOnEditor")); + } + return component; + } + + public HelpCtx getHelp() { + return new HelpCtx("org.openoffice.extensions.working.with.addons"); // NOI18N + } + + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet(1); + public final void addChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.add(l); + } + } + public final void removeChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.remove(l); + } + } + public 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 readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + Object val = wizardDescriptor.getProperty("GotToolbar"); // NOI18N + if (val != null) + isFinshablePanel = !((Boolean)val).booleanValue(); + component.read(wizardDescriptor); + } + + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + public boolean isFinishPanel() { + return isFinshablePanel; + } + + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } + +}