package sk.stuba.fiit.perconik.activity.ui.preferences; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; 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.Event; import org.eclipse.swt.widgets.Group; import sk.stuba.fiit.perconik.activity.preferences.ActivityPreferences; import sk.stuba.fiit.perconik.eclipse.swt.widgets.WidgetListener; import sk.stuba.fiit.perconik.ui.Buttons; import sk.stuba.fiit.perconik.ui.Groups; import sk.stuba.fiit.perconik.ui.Labels; import sk.stuba.fiit.perconik.ui.preferences.AbstractWorkbenchPreferencePage; import static sk.stuba.fiit.perconik.core.plugin.Activator.loadedServices; public final class ActivityPreferencePage extends AbstractWorkbenchPreferencePage { Button defaultOptionsButton; DefaultOptionsDialog defaultOptionsDialog; public ActivityPreferencePage() {} @Override public final void createControl(final Composite parent) { super.createControl(parent); this.updatePage(); } @Override protected Control createContent(final Composite parent) { this.initializeDialogUnits(parent); this.noDefaultAndApplyButton(); Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(GridLayoutFactory.fillDefaults().create()); Group defaultOptionsGroup = Groups.create(composite, "Listener Default Options"); defaultOptionsGroup.setLayout(new GridLayout(2, false)); Labels.create(defaultOptionsGroup, "Adjust default options for all activity listeners"); this.defaultOptionsButton = Buttons.create(defaultOptionsGroup, "Edit", new WidgetListener() { public void handleEvent(final Event event) { performDefaultOptions(); } }); this.defaultOptionsDialog = new DefaultOptionsDialog(this.getShell()); Dialog.applyDialogFont(composite); return composite; } void updatePage() { this.updateMessage(); this.updateButtons(); } void updateMessage() { if (loadedServices()) { this.setErrorMessage(null); } else { this.setErrorMessage("Core services not loaded"); } } void updateButtons() { boolean loaded = loadedServices(); this.defaultOptionsButton.setEnabled(loaded); } void performDefaultOptions() { DefaultOptionsDialog dialog = this.defaultOptionsDialog; dialog.setTitle("Listener Default Options"); dialog.setActivityPreferences(ActivityPreferences.getShared()); dialog.open(); if (dialog.getReturnCode() == Window.OK) { dialog.configure(); } } @Override public Control getControl() { if (this.isContentCreated()) { this.updatePage(); } return super.getControl(); } }