package it.unibas.bartgui.egtaskdataobject.nodes;

import bart.model.EGTask;
import it.unibas.bartgui.egtaskdataobject.EGTaskDataObjectDataObject;
import it.unibas.bartgui.resources.R;
import java.io.IOException;
import javax.swing.Action;
import org.openide.actions.DeleteAction;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
import org.openide.util.lookup.Lookups;
import org.openide.util.lookup.ProxyLookup;

/**
 *
 * @author Grandinetti Giovanni <[email protected]>
 */
@NbBundle.Messages({
        "HINT_AutoritativeSourceNode=Authoritative Source"
})
public class AuthoritativeSourceNode extends AbstractNode   {

    private String autoritativeSource;
    
    public AuthoritativeSourceNode(EGTask egt, EGTaskDataObjectDataObject dto, String autoritativeSource) {
        super(Children.LEAF,
                new ProxyLookup(Lookups.fixed(egt,dto,autoritativeSource),dto.getAbstractLookup()));
        this.autoritativeSource = autoritativeSource;
        setName(autoritativeSource);
        setShortDescription(Bundle.HINT_AutoritativeSourceNode());
        setIconBaseWithExtension(R.IMAGE_DB_TABLE);       
    }
    
    @Override
    public String getHtmlDisplayName() {
        StringBuilder s = new StringBuilder();
        s.append(R.HTML_Node);
        s.append(autoritativeSource);
        s.append(R.HTML_CL_Node);
        return s.toString();
    }

    @Override
    public Action[] getActions(boolean context) {
        Action[] result = new Action[]{
                SystemAction.get(DeleteAction.class),
        };
        return result;
    }

    @Override
    public Action getPreferredAction() {
        return super.getPreferredAction();
    } 
    
    @Override
    public boolean canCut() {
        return false;
    }
    @Override
    public boolean canCopy() {
        return false;
    }

    @Override
    public boolean canRename() {
        return false;
    }
    
    @Override
    public boolean canDestroy() {
        return true;
    }

    @Override
    public void destroy() throws IOException {
        fireNodeDestroyed();
    }  
}