package com.opendoorlogistics.studio.components.map.plugins;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.JCheckBox;
import javax.swing.SwingUtilities;
import com.opendoorlogistics.api.standardcomponents.map.MapApi;
import com.opendoorlogistics.api.standardcomponents.map.MapApiListeners;
import com.opendoorlogistics.api.standardcomponents.map.MapApiListeners.OnBuildToolbarListener;
import com.opendoorlogistics.api.standardcomponents.map.MapPlugin;
import com.opendoorlogistics.api.standardcomponents.map.MapToolbar;
import com.opendoorlogistics.api.standardcomponents.map.StandardMapMenuOrdering;
import com.opendoorlogistics.api.tables.ODLTableReadOnly;
import com.opendoorlogistics.core.gis.map.RenderProperties;
public class RenderCheckboxesPlugin implements MapPlugin{
@Override
public String getId(){
return "com.opendoorlogistics.studio.components.map.plugins.RenderCheckboxesPlugin";
}
// private class UnselectedVisibilityHandler implements MapApiListeners.FilterVisibleObjects, MapApiListeners.OnChangeListener{
// final JCheckBox checkbox = new JCheckBox("Unsel", true);
// final MapApi api;
//
// UnselectedVisibilityHandler(MapApi mapApi){
// this.api = mapApi;
//
// checkbox.setToolTipText("Show unselected objects as well as selected ones?");
//
// api.registerFilterVisibleObjectsListener(this, 0);
//
// checkbox.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent e) {
// api.updateObjectFiltering();
// }
// });
//
// api.registerSelectionChanged(this, 0);
// }
//
// @Override
// public boolean acceptObject(ODLTableReadOnly table, int row) {
// return checkbox.isSelected() || api.isSelectedId(table.getRowId(row));
// }
//
// @Override
// public void onChanged(MapApi api) {
// // selection has changed
// if(!checkbox.isSelected()){
// SwingUtilities.invokeLater(new Runnable() {
//
// @Override
// public void run() {
// api.updateObjectFiltering();
// }
// });
// }
// }
// }
@Override
public void initMap(final MapApi api) {
final JCheckBox text= new JCheckBox("Text",true);
text.setToolTipText("Show labels?");
addActionListener(text,api,RenderProperties.SHOW_TEXT);
final JCheckBox map= new JCheckBox("Map",true);
addActionListener(map,api,RenderProperties.SHOW_BACKGROUND);
map.setToolTipText("Show background map?");
//final UnselectedVisibilityHandler unselObjects = new UnselectedVisibilityHandler(api);
api.registerOnBuildToolbarListener(new OnBuildToolbarListener() {
@Override
public void onBuildToolbar(MapApi api, MapToolbar toolBar) {
toolBar.add(text, "renderoption");
createSeparation(toolBar);
toolBar.add(map, "renderoption");
// createSeparation(toolBar);
//toolBar.add(unselObjects.checkbox, "renderoption");
}
private void createSeparation(MapToolbar toolBar) {
toolBar.add(Box.createRigidArea(new Dimension(4, 4)));
}
}, StandardMapMenuOrdering.RENDER_OPTIONS);
}
private void addActionListener(JCheckBox checkBox, final MapApi api, final long flag){
checkBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
long current = api.getRenderFlags();
if((current & flag)==flag){
current = current & ~flag;
}else{
current = current | flag;
}
api.setRenderFlags(current);
}
});
}
}