/** * Copyright 2010 JBoss Inc * * 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.drools.eclipse.preferences; import org.drools.eclipse.util.DroolsRuntime; import org.drools.eclipse.util.DroolsRuntimeManager; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; public class DroolsRuntimesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { private DroolsRuntimesBlock droolsRuntimesBlock; public DroolsRuntimesPreferencePage() { super("Installed Drools Runtimes"); } public void init(IWorkbench workbench) { } protected Control createContents(Composite ancestor) { initializeDialogUnits(ancestor); noDefaultAndApplyButton(); GridLayout layout= new GridLayout(); layout.numColumns= 1; layout.marginHeight = 0; layout.marginWidth = 0; ancestor.setLayout(layout); Label l = new Label(ancestor, SWT.WRAP); l.setFont(ancestor.getFont()); l.setText( "Add, remove or edit Drools Runtime definitions. " + "By default, the checked Drools Runtime is added to the build " + "path of newly created Drools projects."); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 1; gd.widthHint = 300; l.setLayoutData(gd); l = new Label(ancestor, SWT.NONE); gd = new GridData(GridData.FILL_HORIZONTAL); gd.heightHint = 1; l.setLayoutData(gd); droolsRuntimesBlock = new DroolsRuntimesBlock(); droolsRuntimesBlock.createControl(ancestor); DroolsRuntime[] runtimes = DroolsRuntimeManager.getDroolsRuntimes(); droolsRuntimesBlock.setDroolsRuntimes(runtimes); for (DroolsRuntime runtime: runtimes) { if (runtime.isDefault()) { droolsRuntimesBlock.setDefaultDroolsRuntime(runtime); break; } } if (droolsRuntimesBlock.getDefaultDroolsRuntime() == null) { setErrorMessage("Select a default Drools Runtime"); } Control control = droolsRuntimesBlock.getControl(); GridData data = new GridData(GridData.FILL_BOTH); data.horizontalSpan = 1; data.widthHint = 450; control.setLayoutData(data); droolsRuntimesBlock.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { DroolsRuntime runtime = droolsRuntimesBlock.getDefaultDroolsRuntime(); if (runtime == null) { setErrorMessage("Select a default Drools Runtime"); } else { setErrorMessage(null); } } }); applyDialogFont(ancestor); return ancestor; } public boolean performOk() { if (DroolsRuntimeManager.getDefaultDroolsRuntime() != null) { MessageDialog.openInformation(getShell(), "Warning", "You need to restart Eclipse to update the Drools Runtime of existing projects."); } DroolsRuntimeManager.setDroolsRuntimes(droolsRuntimesBlock.getDroolsRuntimes()); return super.performOk(); } }