blob: f666877e2910ac6c2edf100d5763eced905d2d70 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2007 The University of Manchester
*
* Modifications to the initial code base are copyright of their
* respective authors, or their employers as appropriate.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program 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 program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
******************************************************************************/
package net.sf.taverna.t2.workbench.ui.servicepanel.config;
import static java.awt.GridBagConstraints.HORIZONTAL;
import static java.awt.GridBagConstraints.NONE;
import static java.awt.GridBagConstraints.WEST;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider;
import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;
import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionsConfiguration;
import net.sf.taverna.t2.workbench.helper.Helper;
@SuppressWarnings("serial")
public class ServiceDescriptionConfigPanel extends JPanel {
private static final String REMOVE_PERMANENTLY = "Allow permanent removal of default service providers";
private static final String INCLUDE_DEFAULTS = "Include default service providers";
private final ServiceDescriptionsConfiguration config;
private JCheckBox includeDefaults;
private JCheckBox removePermanently;
private final ServiceDescriptionRegistry serviceDescRegistry;
public ServiceDescriptionConfigPanel(ServiceDescriptionsConfiguration config,
ServiceDescriptionRegistry serviceDescRegistry) {
super(new GridBagLayout());
this.config = config;
this.serviceDescRegistry = serviceDescRegistry;
initialize();
}
private void initialize() {
removeAll();
GridBagConstraints gbc = new GridBagConstraints();
// Title describing what kind of settings we are configuring here
JTextArea descriptionText = new JTextArea(
"Configure behaviour of default service providers in Service Panel");
descriptionText.setLineWrap(true);
descriptionText.setWrapStyleWord(true);
descriptionText.setEditable(false);
descriptionText.setFocusable(false);
descriptionText.setBorder(new EmptyBorder(10, 10, 10, 10));
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = WEST;
gbc.fill = HORIZONTAL;
add(descriptionText, gbc);
includeDefaults = new JCheckBox(INCLUDE_DEFAULTS);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.anchor = WEST;
gbc.fill = NONE;
gbc.insets = new Insets(10, 0, 0, 0);
add(includeDefaults, gbc);
removePermanently = new JCheckBox(REMOVE_PERMANENTLY);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.insets = new Insets(0, 0, 0, 0);
add(removePermanently, gbc);
// Filler
gbc.gridx = 0;
gbc.gridy = 3;
gbc.weighty = 1;
gbc.weightx = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(10, 0, 0, 0);
add(createButtonPanel(), gbc);
setFields(config);
}
/**
* Create the panel to contain the buttons
*
* @return
*/
private JPanel createButtonPanel() {
final JPanel panel = new JPanel();
/**
* The helpButton shows help about the current component
*/
JButton helpButton = new JButton(new AbstractAction("Help") {
@Override
public void actionPerformed(ActionEvent arg0) {
Helper.showHelp(panel);
}
});
panel.add(helpButton);
/**
* The resetButton changes the property values shown to those
* corresponding to the configuration currently applied.
*/
JButton resetButton = new JButton(new AbstractAction("Reset") {
@Override
public void actionPerformed(ActionEvent arg0) {
setFields(config);
}
});
panel.add(resetButton);
/**
* The applyButton applies the shown field values to the
* {@link HttpProxyConfiguration} and saves them for future.
*/
JButton applyButton = new JButton(new AbstractAction("Apply") {
@Override
public void actionPerformed(ActionEvent arg0) {
applySettings();
setFields(config);
}
});
panel.add(applyButton);
return panel;
}
protected void applySettings() {
// Include default service providers
config.setIncludeDefaults(includeDefaults.isSelected());
for (ServiceDescriptionProvider provider : serviceDescRegistry
.getDefaultServiceDescriptionProviders()) {
if (! (provider instanceof ConfigurableServiceProvider))
continue;
if (config.isIncludeDefaults())
serviceDescRegistry.addServiceDescriptionProvider(provider);
else
serviceDescRegistry.removeServiceDescriptionProvider(provider);
}
// Allow permanent removal of default service providers
config.setRemovePermanently(removePermanently.isSelected());
}
/**
* Set the shown configuration field values to those currently in use
* (i.e. last saved configuration).
*
*/
private void setFields(ServiceDescriptionsConfiguration configurable) {
includeDefaults.setSelected(configurable.isIncludeDefaults());
removePermanently.setSelected(configurable.isRemovePermanently());
}
}