/*
* ShutdownPaneItem.java
*
* Created on November 3, 2001, 8:42 AM
*/
package com.limegroup.gnutella.gui.options.panes;
import java.io.IOException;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JRadioButton;
import com.limegroup.gnutella.gui.BoxPanel;
import com.limegroup.gnutella.gui.GUIMediator;
import com.limegroup.gnutella.settings.ApplicationSettings;
import com.limegroup.gnutella.util.CommonUtils;
/**
* This class defines the panel in the options
* window that allows the user to select the
* default shutdown behavior.
*/
public class ShutdownPaneItem extends AbstractPaneItem {
/** RadioButton for selecting immediate shutdown
*/
private JRadioButton shutdownImmediately;
/** RadioButton for selecting the shutdown after transfer
* completion option.
*/
private JRadioButton shutdownAfterTransfers;
/** RadioButton for selecting the minimize to tray option. This
* option is only displayed on systems that support the tray.
*/
private JRadioButton minimizeToTray;
/** Creates new ShutdownOptionsPaneItem
*
* @param key the key for this <tt>AbstractPaneItem</tt> that
* the superclass uses to generate locale-specific keys
*/
public ShutdownPaneItem(final String key) {
super(key);
BoxPanel buttonPanel = new BoxPanel();
String immediateLabel = "OPTIONS_SHUTDOWN_IMMEDIATELY_LABEL";
String whenReadyLabel = "OPTIONS_SHUTDOWN_AFTER_TRANSFERS_LABEL";
String minimizeLabel = "OPTIONS_SHUTDOWN_TO_TRAY_LABEL";
shutdownImmediately = new JRadioButton(GUIMediator.getStringResource(immediateLabel));
shutdownAfterTransfers = new JRadioButton(GUIMediator.getStringResource(whenReadyLabel));
minimizeToTray = new JRadioButton(GUIMediator.getStringResource(minimizeLabel));
ButtonGroup bg = new ButtonGroup();
buttonPanel.add(shutdownImmediately);
buttonPanel.add(shutdownAfterTransfers);
bg.add(shutdownImmediately);
bg.add(shutdownAfterTransfers);
if (CommonUtils.supportsTray()) {
buttonPanel.add(minimizeToTray);
bg.add(minimizeToTray);
}
BoxPanel mainPanel = new BoxPanel(BoxPanel.X_AXIS);
mainPanel.add(Box.createHorizontalGlue());
mainPanel.add(buttonPanel);
mainPanel.add(Box.createHorizontalGlue());
add(mainPanel);
}
/**
* Applies the options currently set in this <tt>PaneItem</tt>.
*
* @throws IOException if the options could not be fully applied
*/
public boolean applyOptions() throws IOException {
if (minimizeToTray.isSelected()) {
ApplicationSettings.MINIMIZE_TO_TRAY.setValue(true);
ApplicationSettings.SHUTDOWN_AFTER_TRANSFERS.setValue(false);
} else if (shutdownAfterTransfers.isSelected()) {
ApplicationSettings.MINIMIZE_TO_TRAY.setValue(false);
ApplicationSettings.SHUTDOWN_AFTER_TRANSFERS.setValue(true);
} else {
ApplicationSettings.MINIMIZE_TO_TRAY.setValue(false);
ApplicationSettings.SHUTDOWN_AFTER_TRANSFERS.setValue(false);
}
return false;
}
/**
* Sets the options for the fields in this <tt>PaneItem</tt> when the
* window is shown.
*/
public void initOptions() {
if (ApplicationSettings.MINIMIZE_TO_TRAY.getValue())
minimizeToTray.setSelected(true);
else if (ApplicationSettings.SHUTDOWN_AFTER_TRANSFERS.getValue())
shutdownAfterTransfers.setSelected(true);
else shutdownImmediately.setSelected(true);
}
public boolean isDirty() {
boolean minimized =
ApplicationSettings.MINIMIZE_TO_TRAY.getValue() &&
!ApplicationSettings.SHUTDOWN_AFTER_TRANSFERS.getValue();
boolean afterTransfers =
!ApplicationSettings.MINIMIZE_TO_TRAY.getValue() &&
ApplicationSettings.SHUTDOWN_AFTER_TRANSFERS.getValue();
return minimizeToTray.isSelected() != minimized ||
shutdownAfterTransfers.isSelected() != afterTransfers;
}
}