/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2011 Neil C Smith.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 3 for more details.
*
* You should have received a copy of the GNU General Public License version 3
* along with this work; if not, see http://www.gnu.org/licenses/
*
*
* Please visit http://neilcsmith.net if you need additional information or
* have any questions.
*/
package net.neilcsmith.praxis.live.pxr;
import java.awt.BorderLayout;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetListener;
import javax.swing.Action;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import net.neilcsmith.praxis.core.ComponentType;
import net.neilcsmith.praxis.live.components.api.Components;
import net.neilcsmith.praxis.live.model.RootProxy;
import net.neilcsmith.praxis.live.pxr.api.RootEditor;
import org.netbeans.spi.palette.PaletteActions;
import org.netbeans.spi.palette.PaletteFactory;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.ExplorerUtils;
import org.openide.explorer.view.BeanTreeView;
import org.openide.nodes.Node;
import org.openide.nodes.NodeTransfer;
import org.openide.util.Lookup;
import org.openide.util.lookup.Lookups;
import org.openide.util.lookup.ProxyLookup;
/**
*
* @author Neil C Smith (http://neilcsmith.net)
*/
public class DebugRootEditor extends RootEditor {
private final ExplorerManager manager;
private final Panel panel;
private final Lookup lookup;
public DebugRootEditor(RootProxy root) {
manager = new ExplorerManager();
manager.setRootContext(root.getNodeDelegate());
panel = new Panel();
lookup = ExplorerUtils.createLookup(manager, panel.getActionMap());
}
@Override
public Lookup getLookup() {
return lookup;
}
@Override
public JComponent getEditorComponent() {
return panel;
}
private class Panel extends JPanel implements ExplorerManager.Provider {
// private JLabel label;
private Panel() {
setLayout(new BorderLayout());
add(new BeanTreeView());
// label = new JLabel("<DROP HERE>", JLabel.CENTER);
// DropTargetListener dtl = new DropTargetAdapter() {
//
// @Override
// public void drop(DropTargetDropEvent dtde) {
// Node n = NodeTransfer.node(dtde.getTransferable(), NodeTransfer.DND_COPY);
// if (n != null) {
// ComponentType t = n.getLookup().lookup(ComponentType.class);
// if (t != null) {
// label.setText(t.toString());
// }
// }
// }
// };
// DropTarget dt = new DropTarget(label, dtl);
// dt.setActive(true);
// dt.setDefaultActions(DnDConstants.ACTION_COPY);
// add(label, BorderLayout.SOUTH);
}
@Override
public ExplorerManager getExplorerManager() {
return manager;
}
}
private class MyPaletteActions extends PaletteActions {
@Override
public Action[] getImportActions() {
return new Action[0];
}
@Override
public Action[] getCustomPaletteActions() {
return new Action[0];
}
@Override
public Action[] getCustomCategoryActions(Lookup category) {
return new Action[0];
}
@Override
public Action[] getCustomItemActions(Lookup item) {
return new Action[0];
}
@Override
public Action getPreferredAction(Lookup item) {
return null;
}
}
}