package ch.elexis.base.messages;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import ch.elexis.core.constants.Preferences;
import ch.elexis.core.data.activator.CoreHub;
public class MessagePreferences extends PreferencePage implements IWorkbenchPreferencePage {
public static final String DEF_SOUND_PATH = "/sounds/notify_sound.wav";
private Text txtSoundFilePath;
private Button btnBrowse, btnSoundOn, btnAnswerAutoclear;
private boolean soundOn, answerAutoclear;
String soundFilePath;
public MessagePreferences(){
super(Messages.Prefs_Messages);
soundOn = CoreHub.userCfg.get(Preferences.USR_MESSAGES_SOUND_ON, true);
soundFilePath = CoreHub.userCfg.get(Preferences.USR_MESSAGES_SOUND_PATH, DEF_SOUND_PATH);
answerAutoclear = CoreHub.userCfg.get(Preferences.USR_MESSAGES_ANSWER_AUTOCLEAR, false);
}
@Override
protected Control createContents(Composite parent){
Composite ret = new Composite(parent, SWT.NONE);
ret.setLayout(new GridLayout(1, false));
Group grpSound = new Group(ret, SWT.NONE);
grpSound.setLayout(new GridLayout(2, false));
GridData gd_grpSound = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
grpSound.setLayoutData(gd_grpSound);
grpSound.setText(Messages.Prefs_SoundSettings);
btnSoundOn = new Button(grpSound, SWT.CHECK);
btnSoundOn.setText(Messages.Prefs_TurnOnSound);
btnSoundOn.setSelection(soundOn);
btnSoundOn.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e){
txtSoundFilePath.setEnabled(btnSoundOn.getSelection());
btnBrowse.setEnabled(btnSoundOn.getSelection());
};
});
new Label(grpSound, SWT.NONE);
txtSoundFilePath = new Text(grpSound, SWT.BORDER);
txtSoundFilePath.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
txtSoundFilePath.setText(soundFilePath);
txtSoundFilePath.setEnabled(soundOn);
btnBrowse = new Button(grpSound, SWT.NONE);
btnBrowse.setText(Messages.Prefs_BrowseFS);
btnBrowse.setEnabled(soundOn);
btnBrowse.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
FileDialog fd = new FileDialog(btnBrowse.getShell(), SWT.OPEN);
fd.setText(Messages.Prefs_FS_Open);
fd.setFilterPath("C:/");
String[] filterExt = {
"*.wav"
};
fd.setFilterExtensions(filterExt);
String filePath = fd.open();
if (filePath != null) {
txtSoundFilePath.setText(filePath);
}
}
});
Group grpDialogConfig = new Group(ret, SWT.NONE);
grpDialogConfig.setLayout(new GridLayout(1, false));
grpDialogConfig.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
grpDialogConfig.setText(Messages.Prefs_DialogSettings);
btnAnswerAutoclear = new Button(grpDialogConfig, SWT.CHECK);
btnAnswerAutoclear.setText(Messages.Prefs_btnAnswerAutoclear);
btnAnswerAutoclear.setSelection(answerAutoclear);
return ret;
}
@Override
public void init(IWorkbench workbench){}
@Override
protected void performDefaults(){
CoreHub.userCfg.set(Preferences.USR_MESSAGES_SOUND_ON, true);
CoreHub.userCfg.set(Preferences.USR_MESSAGES_SOUND_PATH, DEF_SOUND_PATH);
CoreHub.userCfg.set(Preferences.USR_MESSAGES_ANSWER_AUTOCLEAR, false);
btnAnswerAutoclear.setSelection(false);
btnSoundOn.setSelection(true);
btnBrowse.setEnabled(true);
txtSoundFilePath.setEnabled(true);
txtSoundFilePath
.setText(CoreHub.userCfg.get(Preferences.USR_MESSAGES_SOUND_PATH, DEF_SOUND_PATH));
super.performDefaults();
}
@Override
public boolean performOk(){
CoreHub.userCfg.set(Preferences.USR_MESSAGES_SOUND_ON, btnSoundOn.getSelection());
CoreHub.userCfg.set(Preferences.USR_MESSAGES_SOUND_PATH, txtSoundFilePath.getText());
CoreHub.userCfg.set(Preferences.USR_MESSAGES_ANSWER_AUTOCLEAR,
btnAnswerAutoclear.getSelection());
CoreHub.userCfg.flush();
return super.performOk();
}
}