FormLayout layout = new FormLayout("5dlu,pref,5dlu,pref,pref:grow,3dlu,pref,3dlu,pref,5dlu",
"pref,5dlu,pref,1dlu,pref,1dlu,pref,1dlu,pref,10dlu,pref,5dlu," +
"pref,10dlu,pref,5dlu,pref,10dlu,pref,5dlu,pref,10dlu," +
"pref,5dlu,pref,3dlu,pref,10dlu,pref,5dlu,pref");
layout.setColumnGroups(new int[][] {{7,9}});
PanelBuilder pb = new PanelBuilder(layout, new ScrollableJPanel());
pb.setDefaultDialogBorder();
CellConstraints cc = new CellConstraints();
final String[] extArr = { ".wav", ".aif", ".rmf", ".au", ".mid" };
String soundFName=mSettings.getProperty("soundfile","/");
String msg = mLocalizer.msg("soundFileFilter", "Sound file ({0})",
"*.wav, *.aif, *.rmf, *.au, *.mid");
mReminderWindowChB = new JCheckBox(mLocalizer.msg("reminderWindow", "Reminder window"), mSettings.getProperty("usemsgbox","false").equalsIgnoreCase("true"));
mShowAlwaysOnTop = new JCheckBox(mLocalizer.msg("alwaysOnTop","Show always on top"), mSettings.getProperty("alwaysOnTop","true").equalsIgnoreCase("true"));
mShowAlwaysOnTop.setEnabled(mReminderWindowChB.isSelected());
JPanel reminderWindowCfg = new JPanel(new FormLayout("12dlu,default:grow","pref,1dlu,pref"));
reminderWindowCfg.add(mReminderWindowChB, cc.xyw(1,1,2));
reminderWindowCfg.add(mShowAlwaysOnTop, cc.xy(2,3));
mSoundFileChB = new FileCheckBox(mLocalizer.msg("playlingSound", "Play sound"), new File(soundFName), 0, false);
JFileChooser soundChooser=new JFileChooser((String)null);
soundChooser.setFileFilter(new ExtensionFileFilter(extArr, msg));
mSoundFileChB.setFileChooser(soundChooser);
mSoundFileChB.setSelected(mSettings.getProperty("usesound","false").equals("true"));
mBeep = new JCheckBox(mLocalizer.msg("beep", "Speaker sound"), mSettings.getProperty("usebeep","true").equalsIgnoreCase("true"));
mExecFileStr = mSettings.getProperty("execfile", "");
mExecParamStr = mSettings.getProperty("execparam", "");
final JButton soundTestBt = new JButton(mLocalizer.msg("test", "Test"));
mExecChB = new JCheckBox(mLocalizer.msg("executeProgram", "Execute program"));
mExecChB.setSelected(mSettings.getProperty("useexec","false").equals("true"));
mExecFileDialogBtn = new JButton(mLocalizer.msg("executeConfig", "Configure"));
mExecFileDialogBtn.setEnabled(mExecChB.isSelected());
mPluginLabel = new JLabel();
JButton choose = new JButton(mLocalizer.msg("selectPlugins","Choose Plugins"));
mClientPluginTargets = ReminderPlugin.getInstance().getClientPluginsTargets();
handlePluginSelection();
choose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {try{
Window parent = UiUtilities.getLastModalChildOf(MainFrame
.getInstance());
PluginChooserDlg chooser = null;
chooser = new PluginChooserDlg(parent, mClientPluginTargets, null,
ReminderPluginProxy.getInstance());
chooser.setLocationRelativeTo(parent);
chooser.setVisible(true);
if(chooser.getReceiveTargets() != null) {
mClientPluginTargets = chooser.getReceiveTargets();
}
handlePluginSelection();}catch(Exception ee) {ee.printStackTrace();}
}
});
int autoCloseReminderTime = 10;
try {
String asString = mSettings.getProperty("autoCloseReminderTime", "10");
autoCloseReminderTime = Integer.parseInt(asString);
if(autoCloseReminderTime == 0) {
autoCloseReminderTime = 10;
}
} catch (Exception exc) {
// ignore
}
mCloseOnEnd = new JRadioButton(mLocalizer.msg("autoCloseReminderAtProgramEnd","Program end"), mSettings.getProperty("autoCloseBehaviour","onEnd").equals("onEnd"));
mCloseOnEnd.setEnabled(mReminderWindowChB.isSelected());
mCloseNever = new JRadioButton(mLocalizer.msg("autoCloseNever","Never close"), mSettings.getProperty("autoCloseBehaviour","onEnd").equals("never"));
mCloseNever.setEnabled(mReminderWindowChB.isSelected());
mCloseOnTime = new JRadioButton(mLocalizer.ellipsisMsg("autoCloseAfterTime","After time"), mSettings.getProperty("autoCloseBehaviour","onEnd").equals("onTime"));
mCloseOnTime.setEnabled(mReminderWindowChB.isSelected());
ButtonGroup bg = new ButtonGroup();
bg.add(mCloseOnEnd);
bg.add(mCloseNever);
bg.add(mCloseOnTime);
mAutoCloseReminderTimeSp = new JSpinner(new SpinnerNumberModel(autoCloseReminderTime,autoCloseReminderTime < 5 ? 1 : 5,600,1));
mAutoCloseReminderTimeSp.setEnabled(mCloseOnTime.isSelected() && mReminderWindowChB.isSelected());
mShowTimeCounter = new JCheckBox(mLocalizer.msg("showTimeCounter","Show time counter"),mSettings.getProperty("showTimeCounter","false").compareTo("true") == 0);
mShowTimeCounter.setEnabled(!mCloseNever.isSelected() && mReminderWindowChB.isSelected());
PanelBuilder autoClosePanel = new PanelBuilder(new FormLayout("12dlu,default,2dlu,default:grow","pref,2dlu,pref,2dlu,pref,2dlu,pref,10dlu,pref"));
autoClosePanel.add(mCloseOnEnd, cc.xyw(1,1,4));
autoClosePanel.add(mCloseNever, cc.xyw(1,3,4));
autoClosePanel.add(mCloseOnTime, cc.xyw(1,5,4));
autoClosePanel.add(mAutoCloseReminderTimeSp, cc.xy(2,7));
final JLabel secondsLabel = autoClosePanel.addLabel(mLocalizer.msg("seconds", "seconds (0 = off)"), cc.xy(4,7));
autoClosePanel.add(mShowTimeCounter, cc.xyw(1,9,4));
secondsLabel.setEnabled(mCloseOnTime.isSelected() && mReminderWindowChB.isSelected());
String defaultReminderEntryStr = (String)mSettings.get("defaultReminderEntry");
mDefaultReminderEntryList =new JComboBox(ReminderDialog.SMALL_REMIND_MSG_ARR);
if (defaultReminderEntryStr != null) {
try {
int inx = Integer.parseInt(defaultReminderEntryStr);
if (inx < ReminderDialog.SMALL_REMIND_MSG_ARR.length) {
mDefaultReminderEntryList.setSelectedIndex(inx);
}
}catch(NumberFormatException e) {
// ignore
}
}
mShowTimeSelectionDlg = new JCheckBox(mLocalizer.msg("showTimeSelectionDialog","Show time selection dialog"));
mShowTimeSelectionDlg.setSelected(mSettings.getProperty("showTimeSelectionDialog","true").compareTo("true") == 0);
mShowRemovedDlg = new JCheckBox(mLocalizer.msg("showRemovedDialog","Show removed reminders after data update"));
mShowRemovedDlg.setSelected(mSettings.getProperty("showRemovedDialog","true").compareTo("true") == 0);
pb.addSeparator(mLocalizer.msg("remindBy", "Remind me by"), cc.xyw(1,1,10));
pb.add(reminderWindowCfg, cc.xyw(2,3,4));
pb.add(mSoundFileChB, cc.xyw(2,5,4));
pb.add(mSoundFileChB.getButton(), cc.xy(7,5));
pb.add(soundTestBt, cc.xy(9,5));
pb.add(mBeep, cc.xy(2,7));
pb.add(mExecChB, cc.xyw(2,9,4));
pb.add(mExecFileDialogBtn, cc.xyw(7,9,3));
pb.addSeparator(mLocalizer.msg("sendToPlugin", "Send reminded program to"), cc.xyw(1,11,10));
pb.add(mPluginLabel, cc.xyw(2,13,4));
pb.add(choose, cc.xyw(7,13,3));
final JLabel c = (JLabel) pb.addSeparator(mLocalizer.msg("autoCloseReminder", "Automatically close reminder"), cc.xyw(1,15,10)).getComponent(0);
c.setEnabled(mReminderWindowChB.isSelected());
pb.add(autoClosePanel.getPanel(), cc.xyw(2,17,5));
JPanel reminderEntry = new JPanel(new FlowLayout(FlowLayout.LEADING,0,0));
reminderEntry.add(mDefaultReminderEntryList);
pb.addSeparator(mLocalizer.msg("defaltReminderEntry","Default reminder time"), cc.xyw(1,19,10));