/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.preference;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.net.URL;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.servoy.j2db.IApplication;
import com.servoy.j2db.smart.J2DBClient;
import com.servoy.j2db.util.Utils;
/**
* Preference panel related to services
* @author jblok
*/
public class ServicePanel extends PreferencePanel implements ChangeListener
{
private final IApplication application;
private final JCheckBox checkBox;
/**
* Constructor for ServicePanel that shows the 2 way socket option, will only be called/shown when the DefaultRMISocketfactory is used.
*
* @param application
*/
public ServicePanel(IApplication app)
{
super(new BorderLayout());
application = app;
JPanel namePanel = new JPanel(new GridLayout(0, 1, J2DBClient.BUTTON_SPACING, J2DBClient.BUTTON_SPACING));
JPanel fieldPanel = new JPanel(new GridLayout(0, 1, J2DBClient.BUTTON_SPACING, J2DBClient.BUTTON_SPACING));
URL base = application.getServerURL();
JLabel label = new JLabel(""); //$NON-NLS-1$
boolean enabled = Utils.getAsBoolean(application.getSettings().getProperty(base.getHost() + base.getPort() + "SocketFactory.useTwoWaySocket", "true")); //$NON-NLS-1$//$NON-NLS-2$
checkBox = new JCheckBox(application.getI18NMessage("servoy.preference.service.twoWaySocket"), enabled); //$NON-NLS-1$
checkBox.addChangeListener(this);
namePanel.add(label);
fieldPanel.add(checkBox);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(namePanel, BorderLayout.WEST);
panel.add(fieldPanel, BorderLayout.CENTER);
add(panel, BorderLayout.NORTH);
}
/**
* @see PreferencePanel#cancel()
*/
@Override
public boolean handleCancel()
{
return true;
}
/**
* @see PreferencePanel#ok()
*/
@Override
public boolean handleOK()
{
URL base = application.getServerURL();
application.getSettings().put(base.getHost() + base.getPort() + "SocketFactory.useTwoWaySocket", Boolean.toString(checkBox.isSelected())); //$NON-NLS-1$
return true;
}
/**
* @see PreferencePanel#getTabName()
*/
@Override
public String getTabName()
{
return application.getI18NMessage("servoy.preference.service.tabName"); //$NON-NLS-1$
}
private ChangeListener listener;
@Override
public void addChangeListener(ChangeListener l)
{
listener = l;
}
private void fireChangeEvent()
{
changed = true;
listener.stateChanged(new ChangeEvent(this));
}
private boolean changed = false;
public void stateChanged(ChangeEvent e)
{
fireChangeEvent();
}
@Override
public int getRequiredUserAction()
{
int retval = PreferencePanel.NO_USER_ACTION_REQUIRED;
if (changed)
{
retval = PreferencePanel.APPLICATION_RESTART_NEEDED;
}
changed = false;
return retval;
}
}