/**
*
*/
package org.javabuilders.swing.handler.type;
import java.awt.Component;
import java.util.Map;
import javax.swing.Icon;
import javax.swing.JTabbedPane;
import org.javabuilders.BuildException;
import org.javabuilders.BuildProcess;
import org.javabuilders.Builder;
import org.javabuilders.BuilderConfig;
import org.javabuilders.Node;
import org.javabuilders.handler.ITypeHandlerFinishProcessor;
import org.javabuilders.swing.IconUtils;
import org.javabuilders.swing.SwingJavaBuilder;
/**
* Handles JTabbedPane and creating tab pages
* @author Jacek Furmankiewicz
*/
public class JTabbedPaneTypeHandler implements ITypeHandlerFinishProcessor {
private static final JTabbedPaneTypeHandler singleton = new JTabbedPaneTypeHandler();
public final static String TAB_TITLE = "tabTitle";
public final static String TAB_ICON = "tabIcon";
public final static String TAB_TOOLTIP ="tabToolTip";
public final static String TAB_ENABLED ="tabEnabled";
/**
* @return Singleton
*/
public static JTabbedPaneTypeHandler getInstance() {return singleton;}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeHandlerPostProcessor#finish(org.javabuilders.BuilderConfig, org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.util.Map)
*/
public void finish(BuilderConfig config, BuildProcess process,
Node current, String key, Map<String, Object> typeDefinition)
throws BuildException {
JTabbedPane tabs = (JTabbedPane) current.getMainObject();
Node content = current.getChildNode(Builder.CONTENT);
if (content != null) {
current.getCustomProperties().put(SwingJavaBuilder.PROPERTY_IGNORE_LAYOUT_MANAGER, Boolean.TRUE);
int tabCounter = 0;
for(Node child : content.getChildNodes()) {
tabCounter++;
Component c = (Component) child.getMainObject();
String tabTitle = child.getStringProperty(TAB_TITLE);
if (tabTitle == null) {
//no title? put the component name as default
tabTitle = c.getName();
if (tabTitle == null) {
//still no title? create default tab title then...
tabTitle = String.format("tab%s",tabCounter);
}
}
String tabIcon = child.getStringProperty(TAB_ICON);
Icon icon = null;
if (tabIcon != null) {
icon = IconUtils.getIcon(process, tabIcon);
}
String tabTooltip = child.getStringProperty(TAB_TOOLTIP);
tabs.addTab(tabTitle, icon, c, tabTooltip);
String tabEnabled = child.getStringProperty(TAB_ENABLED);
if (Builder.BOOLEAN_FALSE.equals(tabEnabled)) {
tabs.setEnabledAt(tabs.getTabCount() - 1, false);
}
}
}
}
}