diff options
Diffstat (limited to 'scripting/java/org/openoffice/idesupport/ui/ConfigurePanel.java')
-rw-r--r-- | scripting/java/org/openoffice/idesupport/ui/ConfigurePanel.java | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/scripting/java/org/openoffice/idesupport/ui/ConfigurePanel.java b/scripting/java/org/openoffice/idesupport/ui/ConfigurePanel.java new file mode 100644 index 000000000000..7e5a0e330a11 --- /dev/null +++ b/scripting/java/org/openoffice/idesupport/ui/ConfigurePanel.java @@ -0,0 +1,239 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: ConfigurePanel.java,v $ + * $Revision: 1.10 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +package org.openoffice.idesupport.ui; + +import java.io.File; +import java.io.IOException; + +import java.util.Vector; +import java.util.Enumeration; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JButton; +import javax.swing.AbstractButton; +import javax.swing.ImageIcon; +import javax.swing.border.LineBorder; + +import java.awt.BorderLayout; +import java.awt.GridBagLayout; +import java.awt.GridBagConstraints; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import org.w3c.dom.Document; + +import com.sun.star.script.framework.container.ScriptEntry; +import com.sun.star.script.framework.container.ParcelDescriptor; + +import org.openoffice.idesupport.zip.ParcelZipper; + +public class ConfigurePanel extends JPanel { + + private File basedir; + private Vector classpath; + private ParcelDescriptor descriptor; + + private MethodPanel methodPanel; + private ScriptPanel scriptPanel; + + public static final String DIALOG_TITLE = + "Choose What to Export as Scripts"; + + public ConfigurePanel(String basedir, Vector classpath, + ParcelDescriptor descriptor) { + + this.basedir = new File(basedir); + this.classpath = classpath; + this.descriptor = descriptor; + initUI(); + } + + public ConfigurePanel(String basedir, Vector classpath) + throws IOException { + + this.basedir = new File(basedir); + this.classpath = classpath; + this.descriptor = new ParcelDescriptor(new File(this.basedir, + ParcelZipper.PARCEL_DESCRIPTOR_XML)); + initUI(); + } + + public void reload(String basedir, Vector classpath, + ParcelDescriptor descriptor) { + + if (basedir != null) + this.basedir = new File(basedir); + + if (classpath != null) + this.classpath = classpath; + + if (descriptor != null) { + descriptor = descriptor; + } + + methodPanel.reload(this.basedir, this.classpath, + descriptor.getLanguage()); + scriptPanel.reload(descriptor.getScriptEntries()); + } + + public void reload(String basedir, Vector classpath) + throws IOException { + + if (basedir != null) + this.basedir = new File(basedir); + + if (classpath != null) + this.classpath = classpath; + + this.descriptor = new ParcelDescriptor(new File(this.basedir, + ParcelZipper.PARCEL_DESCRIPTOR_XML)); + + methodPanel.reload(this.basedir, this.classpath, + descriptor.getLanguage()); + scriptPanel.reload(descriptor.getScriptEntries()); + } + + public ParcelDescriptor getConfiguration() throws Exception { + Enumeration scripts = scriptPanel.getScriptEntries(); + descriptor.setScriptEntries(scripts); + return descriptor; + } + + private void initUI() { + + JPanel leftPanel = new JPanel(); + JPanel methodButtons = initMethodButtons(); + methodPanel = new MethodPanel(basedir, classpath, descriptor.getLanguage()); + + leftPanel.setLayout(new BorderLayout()); + leftPanel.add(methodPanel, BorderLayout.CENTER); + + JPanel rightPanel = new JPanel(); + JPanel scriptButtons = initScriptButtons(); + scriptPanel = new ScriptPanel(descriptor.getScriptEntries()); + + rightPanel.setLayout(new BorderLayout()); + rightPanel.add(scriptPanel, BorderLayout.CENTER); + rightPanel.add(scriptButtons, BorderLayout.SOUTH); + + setLayout(new GridBagLayout()); + setPreferredSize(new java.awt.Dimension(700, 300)); + setBorder(LineBorder.createBlackLineBorder()); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = 0; + gbc.gridy = 0; + gbc.fill = java.awt.GridBagConstraints.BOTH; + gbc.ipadx = 40; + gbc.anchor = java.awt.GridBagConstraints.WEST; + gbc.insets = new Insets(10, 5, 5, 5); + gbc.weightx = 0.75; + add(leftPanel, gbc); + + gbc = new java.awt.GridBagConstraints(); + gbc.gridx = 1; + gbc.gridy = 0; + add(methodButtons, gbc); + + gbc = new java.awt.GridBagConstraints(); + gbc.gridx = 2; + gbc.gridy = 0; + gbc.gridwidth = java.awt.GridBagConstraints.REMAINDER; + gbc.fill = java.awt.GridBagConstraints.BOTH; + gbc.anchor = java.awt.GridBagConstraints.EAST; + gbc.insets = new Insets(10, 5, 5, 5); + gbc.weightx = 1.0; + gbc.weighty = 1.0; + add(rightPanel, gbc); + } + + private JPanel initMethodButtons() { + JPanel panel = new JPanel(); + panel.setLayout(new GridBagLayout()); + ImageIcon icon = new ImageIcon(getClass().getResource("/org/openoffice/idesupport/ui/add.gif")); + JButton addButton = new JButton("Add", icon); + addButton.setHorizontalTextPosition(AbstractButton.LEFT); + + addButton.addActionListener( + new ActionListener() { + public void actionPerformed(ActionEvent e) { + scriptPanel.addScriptEntries(methodPanel.getSelectedEntries()); + } + } + ); + + GridBagConstraints gbc = new java.awt.GridBagConstraints(); + gbc.gridwidth = java.awt.GridBagConstraints.REMAINDER; + gbc.fill = java.awt.GridBagConstraints.HORIZONTAL; + gbc.insets = new Insets(5, 5, 5, 5); + panel.add(addButton, gbc); + + JPanel dummyPanel = new JPanel(); + gbc = new java.awt.GridBagConstraints(); + gbc.gridwidth = java.awt.GridBagConstraints.REMAINDER; + gbc.gridheight = java.awt.GridBagConstraints.REMAINDER; + gbc.fill = java.awt.GridBagConstraints.BOTH; + gbc.weightx = 1.0; + gbc.weighty = 1.0; + panel.add(dummyPanel, gbc); + + return panel; + } + + private JPanel initScriptButtons() { + JPanel panel = new JPanel(); + JButton removeButton = new JButton("Remove"); + JButton removeAllButton = new JButton("Remove All"); + + removeButton.addActionListener( + new ActionListener() { + public void actionPerformed(ActionEvent e) { + scriptPanel.removeSelectedRows(); + } + } + ); + + removeAllButton.addActionListener( + new ActionListener() { + public void actionPerformed(ActionEvent e) { + scriptPanel.removeAllRows(); + } + } + ); + + panel.add(removeButton); + panel.add(removeAllButton); + + return panel; + } +} |