blob: 9f1dcd0dd9fc59dbde0b4b7bf249f2d3c8ffed12 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Oracle. 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:
* Oracle - initial API and implementation
*******************************************************************************/
package org.eclipse.jpt.jpa.ui.internal.prefs;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.jpa.core.prefs.JpaEntityGenPreferencesManager;
import org.eclipse.jpt.jpa.ui.internal.JptUiMessages;
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.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PropertyPage;
public class JpaEntityGenPreferencePage extends PropertyPage {
private JpaEntityGenPreferencesManager prefsManager;
private EntityGenComposite entityGenComposite;
// ********** constructors **********
public JpaEntityGenPreferencePage() {
super();
this.setDescription(JptUiMessages.JpaEntityGenPreferencePage_Description);
}
// ********** overrides **********
@Override
public boolean performOk() {
super.performOk();
this.updateProjectEntityGenPreferences();
return true;
}
@Override
protected Control createContents(Composite parent) {
this.prefsManager = new JpaEntityGenPreferencesManager(this.getProject());
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new GridLayout());
this.entityGenComposite = new EntityGenComposite(composite);
return composite;
}
// ********** preferences **********
private void updateProjectEntityGenPreferences() {
if(StringTools.stringIsEmpty(this.getDefaultPackage())) {
this.prefsManager.removeDefaultPackagePreference();
}
else {
this.prefsManager.setDefaultPackagePreference(this.getDefaultPackage());
}
}
// ********** internal methods **********
private IProject getProject() {
IAdaptable adaptable= this.getElement();
return adaptable == null ? null : (IProject)adaptable.getAdapter(IProject.class);
}
// ********** getters *********
private String getDefaultPackage() {
return this.entityGenComposite.getDefaultPackage();
}
// ********** queries *********
private String getDefaultPackagePreference() {
return this.prefsManager.getDefaultPackagePreference();
}
// ********** EntityGenComposite **********
class EntityGenComposite {
private final Text defaultPackageText;
// ********** constructor **********
private EntityGenComposite(Composite parent) {
super();
// Entity Gen group box
Group group = new Group(parent, SWT.NONE);
group.setText(JptUiMessages.JpaEntityGenPreferencePage_generalGroup_title);
group.setLayout(new GridLayout(2, false));
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// default package
this.buildLabel(group, 1, JptUiMessages.JpaEntityGenPreferencePage_defaultPackageLabel);
this.defaultPackageText = this.buildText(group, 1);
this.initializeFromPreferences();
}
// ********** UI controls **********
private void initializeFromPreferences() {
// source
this.defaultPackageText.setText(getDefaultPackagePreference());
}
private Text buildText(Composite parent, int horizontalSpan) {
Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = horizontalSpan;
text.setLayoutData(gridData);
return text;
}
private Label buildLabel(Composite parent, int span, String text) {
Label label = new Label(parent, SWT.NONE);
label.setText(text);
GridData gridData = new GridData();
gridData.horizontalSpan = span;
label.setLayoutData(gridData);
return label;
}
// ********** getters *********
private String getDefaultPackage() {
return this.defaultPackageText.getText();
}
}
}