package eu.jucy.gui.favhub;
import java.util.ArrayList;
import java.util.List;
import logger.LoggerFactory;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import eu.jucy.gui.Lang;
import eu.jucy.gui.favhub.IFavHubAdvanced.ICompControl;
import uc.FavHub;
public class AdvancedFavHubPropertiesDialog extends Dialog {
private static Logger logger = LoggerFactory.make();
private final FavHub modify;
private final List<ICompControl> controls = new ArrayList<ICompControl>();
public AdvancedFavHubPropertiesDialog(Shell parent,FavHub modify) {
super(parent);
this.modify = modify;
setBlockOnOpen(true);
}
/**
* Create contents of the dialog
*/
protected Composite createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
getShell().setText(Lang.AdvancedFavHubProperties);
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] configElements = reg
.getConfigurationElementsFor(IFavHubAdvanced.ExtensionPointID);
CTabFolder tabFolder = new CTabFolder(composite,SWT.TOP|SWT.BORDER);
tabFolder.setSimple(false);
for (IConfigurationElement element : configElements) {
try {
CTabItem item = new CTabItem(tabFolder, SWT.NONE);
item.setText(element.getAttribute("tab_name"));
IFavHubAdvanced fha = (IFavHubAdvanced) element.createExecutableExtension("class");
Composite comp = new Composite(tabFolder,SWT.NONE);
ICompControl icc = fha.fillComposite(comp, modify);
controls.add(icc);
item.setControl(comp);
} catch (CoreException e) {
logger.warn(e, e);
}
}
return composite;
}
@Override
protected void okPressed() {
for (ICompControl icc:controls) {
icc.okPressed(modify);
}
super.okPressed();
}
}