package com.kartoflane.superluminal2.tools;
import java.util.HashMap;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.widgets.Composite;
import com.kartoflane.superluminal2.ui.EditorWindow;
import com.kartoflane.superluminal2.ui.sidebar.CreationToolComposite;
/**
* "Dummy" tool, used to create the sidebar toolkit when clicked.
*
* @see {@link RoomTool}
* @see {@link DoorTool}
* @see {@link MountTool}
* @see {@link StationTool}
* @author kartoFlane
*
*/
public class CreationTool extends Tool {
private Tools selectedSubtool = Tools.ROOM;
private HashMap<Tools, Boolean> enableToolMap = new HashMap<Tools, Boolean>();
public CreationTool(EditorWindow window) {
super(window);
enableToolMap.put(Tools.ROOM, true);
enableToolMap.put(Tools.DOOR, true);
enableToolMap.put(Tools.WEAPON, true);
enableToolMap.put(Tools.STATION, true);
}
@Override
public void select() {
window.disposeSidebarContent();
CreationToolComposite createC = getToolComposite(window.getSidebarWidget());
window.setSidebarContent(createC);
createC.updateData();
}
@Override
public void deselect() {
}
public boolean isEnabled(Tools subtool) {
if (!enableToolMap.containsKey(subtool))
throw new IllegalArgumentException("Not a subtool: " + subtool);
return enableToolMap.get(subtool);
}
public void setEnabled(Tools subtool, boolean enable) {
if (!enableToolMap.containsKey(subtool))
throw new IllegalArgumentException("Not a subtool: " + subtool);
enableToolMap.put(subtool, enable);
}
public void setSelectedSubtool(Tools subtool) {
selectedSubtool = subtool;
}
public Tools getSelectedSubtool() {
return selectedSubtool;
}
public void selectSubtool(Tools subtool) {
try {
if (isEnabled(subtool)) {
CreationToolComposite composite = getToolComposite(null);
setSelectedSubtool(subtool);
composite.updateData();
}
} catch (IllegalArgumentException e) {
throw new IllegalStateException("Sidebar widget for Creation Tool does not exist.");
}
}
@Override
public CreationToolComposite getToolComposite(Composite parent) {
return (CreationToolComposite) super.getToolComposite(parent);
}
@Override
protected CreationToolComposite createToolComposite(Composite parent) {
if (parent == null)
throw new IllegalArgumentException("Parent must not be null.");
compositeInstance = new CreationToolComposite(parent);
return (CreationToolComposite) compositeInstance;
}
@Override
public void mouseDoubleClick(MouseEvent e) {
}
@Override
public void mouseDown(MouseEvent e) {
}
@Override
public void mouseUp(MouseEvent e) {
}
@Override
public void mouseMove(MouseEvent e) {
}
@Override
public void mouseEnter(MouseEvent e) {
}
@Override
public void mouseExit(MouseEvent e) {
}
@Override
public void mouseHover(MouseEvent e) {
}
}