/*******************************************************************************
* Copyright (c) 2012 VMware, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.roo.ui.internal.properties;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.springframework.ide.eclipse.core.SpringCorePreferences;
import org.springframework.ide.eclipse.roo.core.RooCoreActivator;
import org.springframework.ide.eclipse.ui.dialogs.ProjectAndPreferencePage;
/**
* @author Christian Dupuis
* @since 2.2.0
*/
public class RooInstallPropertyPage extends ProjectAndPreferencePage {
public static final String PREF_ID = "com.springsource.sts.roo.ui.preferencePage"; //$NON-NLS-1$
public static final String PROP_ID = "com.springsource.sts.roo.ui.projectPropertyPage"; //$NON-NLS-1$
private Combo rooInstallCombo;
public RooInstallPropertyPage() {
noDefaultAndApplyButton();
}
@Override
@SuppressWarnings("deprecation")
public boolean performOk() {
if (useProjectSettings()) {
SpringCorePreferences.getProjectPreferences(getProject(), RooCoreActivator.PLUGIN_ID).putBoolean(
RooCoreActivator.PROJECT_PROPERTY_ID, false);
SpringCorePreferences.getProjectPreferences(getProject(), RooCoreActivator.PLUGIN_ID).putString(
RooCoreActivator.ROO_INSTALL_PROPERTY, rooInstallCombo.getText());
}
else {
SpringCorePreferences.getProjectPreferences(getProject(), RooCoreActivator.PLUGIN_ID).putBoolean(
RooCoreActivator.PROJECT_PROPERTY_ID, true);
}
RooCoreActivator.getDefault().savePluginPreferences();
// always say it is ok
return super.performOk();
}
@Override
protected Control createPreferenceContent(Composite composite) {
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.numColumns = 2;
composite.setLayout(layout);
Label notes = new Label(composite, SWT.WRAP);
notes
.setText("If no project specific Roo installation is selected, the workspace default installation will be used. ");
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
notes.setLayoutData(gd);
// Label spacer = new Label(composite, SWT.NONE);
// spacer.setLayoutData(gd);
Label options = new Label(composite, SWT.WRAP);
options.setText("Roo Installation: ");
options.setLayoutData(new GridData(GridData.BEGINNING));
rooInstallCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
rooInstallCombo.setItems(RooCoreActivator.getDefault().getInstallManager().getAllInstallNames());
rooInstallCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
String installName = SpringCorePreferences.getProjectPreferences(getProject(), RooCoreActivator.PLUGIN_ID)
.getString(RooCoreActivator.ROO_INSTALL_PROPERTY, null);
String[] names = rooInstallCombo.getItems();
for (int i = 0; i < names.length; i++) {
if (names[i].equals(installName)) {
rooInstallCombo.select(i);
break;
}
}
Dialog.applyDialogFont(composite);
return composite;
}
@Override
protected String getPreferencePageID() {
return PREF_ID;
}
@Override
protected String getPropertyPageID() {
return PROP_ID;
}
@Override
protected boolean hasProjectSpecificOptions(IProject project) {
return !SpringCorePreferences.getProjectPreferences(project, RooCoreActivator.PLUGIN_ID).getBoolean(
RooCoreActivator.PROJECT_PROPERTY_ID, false);
}
}