зеркало из https://github.com/mozilla/pjs.git
Checked in nascent "select the current node in the tree view when the user shift-clicks on a node" feature,
but it's blocked by the incompleteness of the DOM implementation in M13.
This commit is contained in:
Родитель
ef2b9a261c
Коммит
1e6e9f6dcb
|
@ -31,6 +31,11 @@ import org.w3c.dom.NodeList;
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
|
|
||||||
|
import org.w3c.dom.events.Event;
|
||||||
|
import org.w3c.dom.events.EventTarget;
|
||||||
|
import org.w3c.dom.events.EventListener;
|
||||||
|
import org.w3c.dom.events.MouseEvent;
|
||||||
|
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JSplitPane;
|
import javax.swing.JSplitPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
@ -38,16 +43,19 @@ import javax.swing.JFrame;
|
||||||
import javax.swing.JTree;
|
import javax.swing.JTree;
|
||||||
|
|
||||||
import javax.swing.tree.TreeSelectionModel;
|
import javax.swing.tree.TreeSelectionModel;
|
||||||
|
import javax.swing.tree.TreePath;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
|
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
||||||
* A dom viewer Frame
|
* A dom viewer Frame
|
||||||
|
|
||||||
*
|
*
|
||||||
* @version $Id: DOMViewerFrame.java,v 1.1 2000-06-04 22:16:04 edburns%acm.org Exp $
|
* @version $Id: DOMViewerFrame.java,v 1.2 2000-06-08 18:40:20 edburns%acm.org Exp $
|
||||||
*
|
*
|
||||||
* @see org.mozilla.webclient.BrowserControlFactory
|
* @see org.mozilla.webclient.BrowserControlFactory
|
||||||
|
|
||||||
|
@ -62,7 +70,7 @@ import java.awt.BorderLayout;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class DOMViewerFrame extends JFrame {
|
public class DOMViewerFrame extends JFrame implements EventListener {
|
||||||
|
|
||||||
private EmbeddedMozilla creator;
|
private EmbeddedMozilla creator;
|
||||||
|
|
||||||
|
@ -76,6 +84,8 @@ private JTree tree;
|
||||||
|
|
||||||
private Document doc;
|
private Document doc;
|
||||||
|
|
||||||
|
private Stack pathStack;
|
||||||
|
|
||||||
|
|
||||||
public DOMViewerFrame (String title, EmbeddedMozilla Creator)
|
public DOMViewerFrame (String title, EmbeddedMozilla Creator)
|
||||||
{
|
{
|
||||||
|
@ -106,9 +116,23 @@ public DOMViewerFrame (String title, EmbeddedMozilla Creator)
|
||||||
public void setDocument(Document newDocument)
|
public void setDocument(Document newDocument)
|
||||||
{
|
{
|
||||||
if (null == newDocument) {
|
if (null == newDocument) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
EventTarget eventTarget = null;
|
||||||
|
|
||||||
|
if (null != doc) {
|
||||||
|
if (doc instanceof EventTarget) {
|
||||||
|
System.out.println("debug: edburns: Document is EventTarget");
|
||||||
|
eventTarget = (EventTarget) doc;
|
||||||
|
eventTarget.removeEventListener("mousedown", this, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
doc = newDocument;
|
doc = newDocument;
|
||||||
|
if (doc instanceof EventTarget) {
|
||||||
|
System.out.println("debug: edburns: Document is EventTarget");
|
||||||
|
eventTarget = (EventTarget) doc;
|
||||||
|
eventTarget.addEventListener("click", this, false);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// store the document as the root node
|
// store the document as the root node
|
||||||
|
@ -136,6 +160,65 @@ public void setDocument(Document newDocument)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// From org.w3c.dom.events.EventListener
|
||||||
|
//
|
||||||
|
|
||||||
|
public void handleEvent(Event e)
|
||||||
|
{
|
||||||
|
if (!(e instanceof MouseEvent)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MouseEvent mouseEvent = (MouseEvent) e;
|
||||||
|
|
||||||
|
if (mouseEvent.getShiftKey()) {
|
||||||
|
// As of M13, getCurrentNode is un-implemented in mozilla.
|
||||||
|
// selectNodeInTree(mouseEvent.getCurrentNode());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void selectNodeInTree(Node node)
|
||||||
|
{
|
||||||
|
TreeSelectionModel selection = tree.getSelectionModel();
|
||||||
|
if (null == selection) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null == node) {
|
||||||
|
selection.clearSelection();
|
||||||
|
}
|
||||||
|
if (null != pathStack) {
|
||||||
|
pathStack.clear();
|
||||||
|
}
|
||||||
|
populatePathStackFromNode(node);
|
||||||
|
if (null == pathStack || pathStack.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TreePath nodePath = new TreePath(pathStack.toArray());
|
||||||
|
|
||||||
|
System.out.println("treePath: " + nodePath.toString());
|
||||||
|
|
||||||
|
selection.setSelectionPath(nodePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void populatePathStackFromNode(Node node)
|
||||||
|
{
|
||||||
|
if (null == pathStack) {
|
||||||
|
// PENDING(edburns): perhaps provide default size
|
||||||
|
pathStack = new Stack();
|
||||||
|
}
|
||||||
|
if (null == pathStack) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pathStack.push(node);
|
||||||
|
Node parent = node.getParentNode();
|
||||||
|
if (null != parent) {
|
||||||
|
populatePathStackFromNode(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// EOF
|
// EOF
|
||||||
|
|
Загрузка…
Ссылка в новой задаче