/*
* Copyright 2010 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.guvnor.tools.preferences;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
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 org.guvnor.tools.Activator;
import org.guvnor.tools.Messages;
import org.guvnor.tools.utils.PlatformUtils;
/**
* Page for setting Guvnor preferences.
*/
public class GuvnorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private Text guvnorURLTemplate;
private Button savePassword;
private Combo decorationIconLoc;
private Button incChangeIndicator;
private Button incRevision;
private Button incDateStamp;
public GuvnorPreferencePage() {
}
public GuvnorPreferencePage(String title) {
super(title);
}
public GuvnorPreferencePage(String title, ImageDescriptor image) {
super(title, image);
}
@Override
protected Control createContents(Composite parent) {
Composite composite = PlatformUtils.createComposite(parent, 1);
Group group = new Group(composite, SWT.NONE);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(data);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
group.setLayout(layout);
group.setText(Messages.getString("prepage.repository.connections")); //$NON-NLS-1$
Composite doubleLine = PlatformUtils.createComposite(group, 2);
new Label(doubleLine, SWT.NONE).setText(Messages.getString("prepage.guvnor.url.template")); //$NON-NLS-1$
guvnorURLTemplate = new Text(doubleLine, SWT.BORDER);
guvnorURLTemplate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
guvnorURLTemplate.setText(getGuvnorTemplatePref());
savePassword = new Button(group, SWT.CHECK);
savePassword.setText(Messages.getString("prepage.save.passwords")); //$NON-NLS-1$
savePassword.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
savePassword.setSelection(true);
group = new Group(composite, SWT.NONE);
data = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(data);
layout = new GridLayout();
layout.numColumns = 1;
group.setLayout(layout);
group.setText(Messages.getString("prepage.file.decoration")); //$NON-NLS-1$
doubleLine = PlatformUtils.createComposite(group, 2);
new Label(doubleLine, SWT.NONE).setText(Messages.getString("prepage.decoration.location")); //$NON-NLS-1$
decorationIconLoc = new Combo(doubleLine, SWT.BORDER | SWT.DROP_DOWN);
String[] locs = IGuvnorPreferenceConstants.OVERLAY_LOCATIONS;
for (int i = 0; i < locs.length; i++) {
decorationIconLoc.add(locs[i]);
}
decorationIconLoc.select(getOverlayLocationPref());
Group textDec = new Group(group, SWT.NONE);
data = new GridData(GridData.FILL_HORIZONTAL);
textDec.setLayoutData(data);
layout = new GridLayout();
layout.numColumns = 1;
textDec.setLayout(layout);
textDec.setText(Messages.getString("prepage.decoration.text")); //$NON-NLS-1$
incChangeIndicator = new Button(textDec, SWT.CHECK);
incChangeIndicator.setText(Messages.getString("prepage.include.change.indicator")); //$NON-NLS-1$
incChangeIndicator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
incChangeIndicator.setSelection(shouldShowChangeIndicator());
incRevision = new Button(textDec, SWT.CHECK);
incRevision.setText(Messages.getString("prepage.include.revision")); //$NON-NLS-1$
incRevision.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
incRevision.setSelection(shouldShowRevision());
incDateStamp = new Button(textDec, SWT.CHECK);
incDateStamp.setText(Messages.getString("prepage.include.date.time.stamp")); //$NON-NLS-1$
incDateStamp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
incDateStamp.setSelection(shouldShowTimeDateStamp());
return composite;
}
@Override
protected IPreferenceStore doGetPreferenceStore() {
return Activator.getDefault().getPreferenceStore();
}
public void init(IWorkbench workbench) { }
@Override
protected void performDefaults() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String defaultLoc = store.getDefaultString(IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_PREF);
if(defaultLoc == null || "".equals(defaultLoc)){
defaultLoc = IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_DEFAULT;
}
store.putValue(IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_PREF, defaultLoc);
guvnorURLTemplate.setText(defaultLoc);
store.putValue(IGuvnorPreferenceConstants.SAVE_PASSWORDS_PREF,
String.valueOf(true));
savePassword.setSelection(true);
store.putValue(IGuvnorPreferenceConstants.OVERLAY_LOCATION_PREF,
String.valueOf(IGuvnorPreferenceConstants.OVERLAY_LOCATION_DEFAULT));
decorationIconLoc.select(IGuvnorPreferenceConstants.OVERLAY_LOCATION_DEFAULT);
store.putValue(IGuvnorPreferenceConstants.SHOW_CHANGE_INDICATOR_PREF,
String.valueOf(true));
incChangeIndicator.setSelection(true);
store.putValue(IGuvnorPreferenceConstants.SHOW_REVISION_PREF,
String.valueOf(true));
incRevision.setSelection(true);
store.putValue(IGuvnorPreferenceConstants.SHOW_DATETIME_PREF,
String.valueOf(true));
incDateStamp.setSelection(true);
PlatformUtils.updateDecoration();
super.performDefaults();
}
@Override
public boolean performOk() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
store.putValue(IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_PREF,
guvnorURLTemplate.getText());
store.putValue(IGuvnorPreferenceConstants.SAVE_PASSWORDS_PREF,
String.valueOf(savePassword.getSelection()));
store.putValue(IGuvnorPreferenceConstants.OVERLAY_LOCATION_PREF,
String.valueOf(decorationIconLoc.getSelectionIndex()));
store.putValue(IGuvnorPreferenceConstants.SHOW_CHANGE_INDICATOR_PREF,
String.valueOf(incChangeIndicator.getSelection()));
store.putValue(IGuvnorPreferenceConstants.SHOW_REVISION_PREF,
String.valueOf(incRevision.getSelection()));
store.putValue(IGuvnorPreferenceConstants.SHOW_DATETIME_PREF,
String.valueOf(incDateStamp.getSelection()));
PlatformUtils.updateDecoration();
return super.performOk();
}
public static String getGuvnorTemplatePref() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String res = null;
if (!store.contains(IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_PREF)) {
res = IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_DEFAULT;
store.putValue(IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_PREF, res);
} else {
res = store.getString(IGuvnorPreferenceConstants.GUVNOR_LOC_TEMPLATE_PREF);
}
return res;
}
public static boolean shouldSavePasswords() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
boolean res = true;
if (!store.contains(IGuvnorPreferenceConstants.SAVE_PASSWORDS_PREF)) {
store.putValue(IGuvnorPreferenceConstants.SAVE_PASSWORDS_PREF, String.valueOf(true));
} else {
res = store.getBoolean(IGuvnorPreferenceConstants.SAVE_PASSWORDS_PREF);
}
return res;
}
public static int getOverlayLocationPref() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
int res = 0;
if (!store.contains(IGuvnorPreferenceConstants.OVERLAY_LOCATION_PREF)) {
store.putValue(IGuvnorPreferenceConstants.OVERLAY_LOCATION_PREF,
String.valueOf(IGuvnorPreferenceConstants.OVERLAY_LOCATION_DEFAULT));
res = IGuvnorPreferenceConstants.OVERLAY_LOCATION_DEFAULT;
} else {
res = store.getInt(IGuvnorPreferenceConstants.OVERLAY_LOCATION_PREF);
}
return res;
}
public static boolean shouldShowChangeIndicator() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
boolean res = true;
if (!store.contains(IGuvnorPreferenceConstants.SHOW_CHANGE_INDICATOR_PREF)) {
store.putValue(IGuvnorPreferenceConstants.SHOW_CHANGE_INDICATOR_PREF, String.valueOf(true));
} else {
res = store.getBoolean(IGuvnorPreferenceConstants.SHOW_CHANGE_INDICATOR_PREF);
}
return res;
}
public static boolean shouldShowRevision() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
boolean res = true;
if (!store.contains(IGuvnorPreferenceConstants.SHOW_REVISION_PREF)) {
store.putValue(IGuvnorPreferenceConstants.SHOW_REVISION_PREF, String.valueOf(true));
} else {
res = store.getBoolean(IGuvnorPreferenceConstants.SHOW_REVISION_PREF);
}
return res;
}
public static boolean shouldShowTimeDateStamp() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
boolean res = true;
if (!store.contains(IGuvnorPreferenceConstants.SHOW_DATETIME_PREF)) {
store.putValue(IGuvnorPreferenceConstants.SHOW_DATETIME_PREF, String.valueOf(true));
} else {
res = store.getBoolean(IGuvnorPreferenceConstants.SHOW_DATETIME_PREF);
}
return res;
}
}