/* * Copyright (C) 2007 Clam <clamisgood@gmail.com> * * This file is part of LateralGM. * LateralGM is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package org.lateralgm.components.impl; import static org.lateralgm.main.Util.deRef; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import javax.swing.tree.DefaultMutableTreeNode; import org.lateralgm.messages.Messages; import org.lateralgm.resources.GmObject; import org.lateralgm.resources.Resource; import org.lateralgm.resources.ResourceReference; import org.lateralgm.resources.sub.Event; import org.lateralgm.resources.sub.MainEvent; public class EventNode extends DefaultMutableTreeNode implements Transferable { private static final long serialVersionUID = 1L; public static final DataFlavor EVENTNODE_FLAVOR = new DataFlavor( DataFlavor.javaJVMLocalObjectMimeType,"Event Node"); private DataFlavor[] flavors = { EVENTNODE_FLAVOR }; public int mainId; public int eventId; public ResourceReference<GmObject> other; public EventNode(String text) { this(text,-1,0); } public EventNode(int mainId) { this(Messages.getString("MainEvent.EVENT" + mainId),mainId,0); //$NON-NLS-1$ } public EventNode(String text, int mainId, int eventId) { setUserObject(text); this.mainId = mainId; this.eventId = eventId; } public EventNode(int mainId, ResourceReference<GmObject> other) { Resource<GmObject,?> r = deRef(other); setUserObject(r == null ? "" : r.getName()); this.mainId = mainId; this.other = other; } public void add(int mainId, int eventId) { add(new EventNode(Event.eventName(mainId,eventId),mainId,eventId)); } public void add(int mainId, ResourceReference<GmObject> other) { add(new EventNode(mainId,other)); } public void add(int mainId) { add(new EventNode(Messages.getString("MainEvent.EVENT" + mainId),mainId,0)); //$NON-NLS-1$ } public boolean isValid() { switch (mainId) { case MainEvent.EV_KEYBOARD: case MainEvent.EV_KEYPRESS: case MainEvent.EV_KEYRELEASE: return Event.KEYS.containsKey(eventId); case MainEvent.EV_COLLISION: return other != null; default: return true; } } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (flavor != EVENTNODE_FLAVOR) throw new UnsupportedFlavorException(flavor); return this; } public DataFlavor[] getTransferDataFlavors() { return flavors; } public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.equals(EVENTNODE_FLAVOR); } /*public void setIcon(Icon ico) { if (ico == null) return; super.setIcon(ico); }*/ }