blob: 73fd31c529de1d9cd069647e66efc5696e6f9c95 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Sybase, Inc. and others.
*
* 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:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.common.ui.internal.guiutils;
import java.util.Properties;
import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin;
import org.eclipse.jst.jsf.common.ui.internal.utils.FavoriteConfigurations;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.plugin.AbstractUIPlugin;
/**
* Builds a favorites with the given name in the plugins resources. This build a
* generic looking favorites section.
*
* @author mengbo
*/
public abstract class FavoriteSection {
private FavoriteConfigurations _favorites;
private Combo _favoriteCombo;
/**
* @param plugin
* @param favoriteName
*/
public FavoriteSection(AbstractUIPlugin plugin, String favoriteName) {
_favorites = new FavoriteConfigurations(plugin, favoriteName);
}
/**
* @param parent
* @param horizontalSpan
* @param comboMinWidth
* @return the combo
*/
public Combo createFavoriteGroup(Composite parent, int horizontalSpan,
int comboMinWidth) {
Group favGroup = SWTUtils.createGroup(parent, JSFUICommonPlugin
.getResourceString("favorites.group.label"), 4, horizontalSpan,
GridData.BEGINNING | GridData.CENTER);
// Add favorite text field
SWTUtils.createLabel(favGroup, JSFUICommonPlugin
.getResourceString("favorites.label"), 1);
_favoriteCombo = SWTUtils.createCombo(favGroup, _favorites
.getFavoritesList(), 1, comboMinWidth, true);
_favoriteCombo.setToolTipText(JSFUICommonPlugin
.getResourceString("favorites.tooltip"));
_favoriteCombo.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
String favName = _favoriteCombo.getText().trim();
if (favName.length() > 0) {
Properties favProp = _favorites.getFavorite(_favoriteCombo
.getText().trim());
if (favProp != null) {
setFavorites(favProp);
}
}
}
});
// Add Save button
Button saveButton = SWTUtils.createPushButton(favGroup, JSFUICommonPlugin
.getResourceString("button.save"));
saveButton.setToolTipText(JSFUICommonPlugin
.getResourceString("favorites.save.tooltip"));
saveButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
String favName = _favoriteCombo.getText().trim();
if (favName.length() == 0) {
favName = JSFUICommonPlugin
.getResourceString("favorites.default");
}
Properties favProp = new Properties();
saveFavorites(favProp);
_favorites.addFavorite(favName, favProp);
_favorites.saveFavorites();
_favoriteCombo.removeAll();
String[] names = _favorites.getFavoritesList();
_favoriteCombo.setItems(names);
_favoriteCombo.setText(favName);
}
});
// Add Remove button
Button removeButton = SWTUtils.createPushButton(favGroup, JSFUICommonPlugin
.getResourceString("button.remove"));
removeButton.setToolTipText(JSFUICommonPlugin
.getResourceString("favorites.remove.tooltip"));
removeButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
String favName = _favoriteCombo.getText().trim();
if (favName.length() > 0) {
_favorites.removeFavorite(favName);
_favorites.saveFavorites();
removeFavorites();
_favoriteCombo.removeAll();
String[] names = _favorites.getFavoritesList();
_favoriteCombo.setItems(names);
}
}
});
return _favoriteCombo;
}
/**
* This method will be called when a new favorite is set. This allows the
* caller to set their values from the properties supplied.
*
* @param prop
*/
public abstract void setFavorites(Properties prop);
/**
* This method will be called when a new favorite is saved. This allows the
* caller to save their values into the properties supplied.
*
* @param prop
*/
public abstract void saveFavorites(Properties prop);
/**
* This method will be called when the active favorite is removed. It allows
* for clearing fields.
*/
public void removeFavorites() {
// do nothing.
}
}