package com.opendoorlogistics.studio.components.map;
import java.awt.Component;
import java.awt.Insets;
import java.util.ArrayList;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JToolBar;
import com.opendoorlogistics.api.standardcomponents.map.MapToolbar;
import com.opendoorlogistics.core.utils.strings.Strings;
import com.opendoorlogistics.studio.controls.ODLScrollableToolbar;
public class MapToolbarImpl extends ODLScrollableToolbar implements MapToolbar {
private String lastGroup;
private ArrayList<Action> actions = new ArrayList<Action>();
public MapToolbarImpl() {
}
@Override
public void add(Action action, String group) {
processSeparator(group);
getToolBar().add(actionToButton(action));
actions.add(action);
}
//
// private void sizeButton(JButton button) {
// Insets margins = new Insets(0, 0, 0, 0);
//
// button.setMargin(margins);
// // button.setVerticalTextPosition(JButton.BOTTOM);
// // button.setHorizontalTextPosition(JButton.CENTER);
//
// }
private JButton actionToButton(Action action){
JButton ret= new JButton(action);
ret.setText("");
ret.setBorder(BorderFactory.createEmptyBorder(5, 3, 5, 3));
ret.setMargin(new Insets(0, 0, 0, 0));
ret.setHorizontalTextPosition(JButton.CENTER);
ret.setVerticalTextPosition(JButton.BOTTOM);
return ret;
}
@Override
public void add(Component component, String group) {
processSeparator(group);
getToolBar().add(component);
}
private void processSeparator(String group) {
if (getToolBar().getComponentCount() > 0 && !Strings.equalsStd(group, lastGroup)) {
getToolBar().addSeparator();
}
lastGroup = group;
}
@Override
public void removeAll() {
lastGroup = null;
getToolBar().removeAll();
}
@Override
public Iterable<Action> getActions() {
return actions;
}
@Override
public void addSeparator() {
getToolBar().addSeparator();
}
@Override
public void add(Action action) {
getToolBar().add(actionToButton(action));
}
@Override
public Component add(Component component) {
return getToolBar().add(component);
}
@Override
public Component getComponent() {
return this;
}
}