/*
* 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.wizards;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.List;
import org.guvnor.tools.Activator;
import org.guvnor.tools.GuvnorRepository;
import org.guvnor.tools.Messages;
import org.guvnor.tools.utils.PlatformUtils;
/**
* Wizard page for selecting a Guvnor repository.
*/
public class SelectGuvnorRepPage extends WizardPage {
private Button createRep;
private Button existingRep;
private List repLocations;
public SelectGuvnorRepPage(String pageName) {
super(pageName);
}
public SelectGuvnorRepPage(String pageName, String title, ImageDescriptor titleImage) {
super(pageName, title, titleImage);
}
public void createControl(Composite parent) {
Composite composite = PlatformUtils.createComposite(parent, 1);
createRep = new Button(composite, SWT.RADIO);
createRep.setText(Messages.getString("select.rep.guvnor.loc")); //$NON-NLS-1$
createRep.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
createRep.setSelection(false);
createRep.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) { }
public void widgetSelected(SelectionEvent e) {
repLocations.setEnabled(existingRep.getSelection());
updateModel();
}
});
existingRep = new Button(composite, SWT.RADIO);
existingRep.setText(Messages.getString("select.rep.guvnor.loc.desc")); //$NON-NLS-1$
existingRep.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
existingRep.setSelection(true);
existingRep.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) { }
public void widgetSelected(SelectionEvent e) {
repLocations.setEnabled(existingRep.getSelection());
updateModel();
}
});
repLocations = new List(composite, SWT.BORDER | SWT.MULTI);
repLocations.setLayoutData(new GridData(GridData.FILL_BOTH));
repLocations.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) { }
public void widgetSelected(SelectionEvent e) {
updateModel();
}
});
addRepositoryList();
super.setControl(composite);
}
private void addRepositoryList() {
java.util.List<GuvnorRepository> reps = Activator.getLocationManager().getRepositories();
for (int i = 0; i < reps.size(); i++) {
repLocations.add(reps.get(i).getLocation());
}
if (repLocations.getItemCount() > 0) {
repLocations.setSelection(0);
updateModel();
}
}
private void updateModel() {
GuvWizardModel model = ((IGuvnorWizard)super.getWizard()).getModel();
if (createRep.getSelection()) {
model.setCreateNewRep(true);
model.setRepLocation(null);
} else {
model.setCreateNewRep(false);
String selected = null;
if (repLocations.getSelection().length > 0) {
selected = repLocations.getSelection()[0];
}
if (selected != null) {
model.setRepLocation(repLocations.getSelection()[0]);
}
}
}
}