package com.horstmann.violet.workspace.sidebar;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JRootPane;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.border.MatteBorder;
import javax.swing.plaf.PanelUI;
import com.horstmann.violet.framework.injection.resources.ResourceBundleInjector;
import com.horstmann.violet.framework.injection.resources.annotation.ResourceBundleBean;
import com.horstmann.violet.framework.theme.ThemeManager;
import com.l2fprod.common.swing.JTaskPane;
import com.l2fprod.common.swing.JTaskPaneGroup;
@ResourceBundleBean(resourceReference=SideBar.class)
public class SideBarUI extends PanelUI
{
public SideBarUI(SideBar sideBar)
{
this.sideBar = sideBar;
ResourceBundleInjector.getInjector().inject(this);
}
@Override
public void installUI(JComponent c)
{
c.removeAll();
c.setLayout(new BorderLayout());
this.taskPane = new JTaskPane();
this.taskPane.setLayout(new GridBagLayout());
this.taskPane.setBorder(new EmptyBorder(0, 0, 0, 0));
addElementToTaskPane(this.sideBar.getEditorToolsBar().getAWTComponent(), standardButtonsTitle, 0);
addElementToTaskPane(this.sideBar.getGraphToolsBar().getAWTComponent(), diagramToolsTitle, 1);
addElementToTaskPane(this.sideBar.getOptionalToolsBar().getAWTComponent(), extendedFunctionsTitle, 2);
addElementToTaskPane(this.sideBar.getColorChoiceBar().getAWTComponent(), colorToolsTitle, 3);
int i = 4;
for (ISideBarElement anExternalElement : this.sideBar.getExternalContributionElements().keySet()) {
String externalElementTitle = this.sideBar.getExternalContributionElements().get(anExternalElement);
addElementToTaskPane(anExternalElement.getAWTComponent(), externalElementTitle, i++);
}
c.add(taskPane, BorderLayout.NORTH);
c.setBorder(new MatteBorder(0, 0, 0, 0, ThemeManager.getInstance().getTheme().getSidebarBorderColor()));
this.sideBar.doLayout();
JRootPane rootPane = SwingUtilities.getRootPane(this.sideBar);
if (rootPane != null) {
rootPane.repaint();
}
}
private void fixWidth()
{
JLabel sizer = new JLabel();
sizer.setPreferredSize(new Dimension(215, 1));
this.taskPane.add(sizer);
}
private void addElementToTaskPane(final Component c, String title, int order)
{
JTaskPaneGroup group = new JTaskPaneGroup();
Font font = group.getFont().deriveFont(Font.PLAIN);
group.setFont(font);
group.setTitle(title);
group.setLayout(new BorderLayout());
group.add(c, BorderLayout.CENTER);
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.FIRST_LINE_START;
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = order;
this.taskPane.add(group,gbc);
}
private SideBar sideBar;
private JTaskPane taskPane;
@ResourceBundleBean(key = "title.standardbuttons.text")
private String standardButtonsTitle;
@ResourceBundleBean(key = "title.diagramtools.text")
private String diagramToolsTitle;
@ResourceBundleBean(key = "title.extendedfunctions.text")
private String extendedFunctionsTitle;
@ResourceBundleBean(key = "title.colortools.text")
private String colorToolsTitle;
}