mirror of
https://github.com/processing/processing4.git
synced 2026-02-13 18:35:37 +01:00
zomg, made it work in first attempt *tears of joy*
This commit is contained in:
@@ -2069,109 +2069,10 @@ public class ASTGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
protected JFrame frmOutlineView;
|
||||
protected SketchOutline sko;
|
||||
protected void showSketchOutline(){
|
||||
frmOutlineView = new JFrame();
|
||||
frmOutlineView.setAlwaysOnTop(true);
|
||||
frmOutlineView.setUndecorated(true);
|
||||
Point tp = editor.ta.getLocationOnScreen();
|
||||
log("TA Co " + tp);
|
||||
frmOutlineView.setBounds(tp.x + editor.ta.getWidth() - 300, tp.y, 300, editor.ta.getHeight());
|
||||
JScrollPane jsp = new JScrollPane();
|
||||
DefaultMutableTreeNode soNode = new DefaultMutableTreeNode();
|
||||
generateSketchOutlineTree(soNode, codeTree);
|
||||
final JTree soTree = new JTree(soNode);
|
||||
soTree.setRootVisible(false);
|
||||
for (int i = 0; i < soTree.getRowCount(); i++) {
|
||||
soTree.expandRow(i);
|
||||
}
|
||||
|
||||
jsp.setViewportView(soTree);
|
||||
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
||||
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
||||
frmOutlineView.add(jsp);
|
||||
frmOutlineView.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
frmOutlineView.setVisible(true);
|
||||
frmOutlineView.addWindowFocusListener(new WindowFocusListener() {
|
||||
public void windowLostFocus(WindowEvent e) {
|
||||
frmOutlineView.setVisible(false);
|
||||
frmOutlineView.dispose();
|
||||
}
|
||||
public void windowGainedFocus(WindowEvent e) {
|
||||
}
|
||||
});
|
||||
|
||||
soTree.addTreeSelectionListener(new TreeSelectionListener() {
|
||||
public void valueChanged(TreeSelectionEvent e) {
|
||||
log(e);
|
||||
SwingWorker worker = new SwingWorker() {
|
||||
protected Object doInBackground() throws Exception {
|
||||
return null;
|
||||
}
|
||||
protected void done() {
|
||||
if (soTree.getLastSelectedPathComponent() == null) {
|
||||
return;
|
||||
}
|
||||
DefaultMutableTreeNode tnode = (DefaultMutableTreeNode) soTree
|
||||
.getLastSelectedPathComponent();
|
||||
if (tnode.getUserObject() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (tnode.getUserObject() instanceof ASTNodeWrapper) {
|
||||
ASTNodeWrapper awrap = (ASTNodeWrapper) tnode.getUserObject();
|
||||
errorCheckerService.highlightNode(awrap);
|
||||
}
|
||||
}
|
||||
};
|
||||
worker.execute();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
protected void generateSketchOutlineTree(DefaultMutableTreeNode node, DefaultMutableTreeNode codetree){
|
||||
if (codetree == null)
|
||||
return;
|
||||
//log("Visi " + codetree + codetree.getUserObject().getClass().getSimpleName());
|
||||
if(!(codetree.getUserObject() instanceof ASTNodeWrapper))
|
||||
return;
|
||||
ASTNodeWrapper awnode = (ASTNodeWrapper) codetree.getUserObject(), aw2 = null;
|
||||
|
||||
if (awnode.getNode() instanceof TypeDeclaration) {
|
||||
aw2 = new ASTNodeWrapper(awnode.getNode(),
|
||||
((TypeDeclaration) awnode.getNode()).getName()
|
||||
.toString());
|
||||
} else if (awnode.getNode() instanceof MethodDeclaration) {
|
||||
aw2 = new ASTNodeWrapper(
|
||||
((MethodDeclaration) awnode
|
||||
.getNode()).getName(),
|
||||
new CompletionCandidate(
|
||||
((MethodDeclaration) awnode
|
||||
.getNode()))
|
||||
.toString());
|
||||
}
|
||||
else if (awnode.getNode() instanceof FieldDeclaration) {
|
||||
FieldDeclaration fd = (FieldDeclaration)awnode.getNode();
|
||||
for (VariableDeclarationFragment vdf : (List<VariableDeclarationFragment>)fd.fragments()) {
|
||||
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(
|
||||
new ASTNodeWrapper(
|
||||
vdf.getName(),
|
||||
new CompletionCandidate(
|
||||
vdf)
|
||||
.toString()));
|
||||
node.add(newNode);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if(aw2 == null) return;
|
||||
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(aw2);
|
||||
node.add(newNode);
|
||||
for (int i = 0; i < codetree.getChildCount(); i++) {
|
||||
generateSketchOutlineTree(newNode,
|
||||
(DefaultMutableTreeNode) codetree
|
||||
.getChildAt(i));
|
||||
}
|
||||
sko = new SketchOutline(codeTree, errorCheckerService);
|
||||
sko.show();
|
||||
}
|
||||
|
||||
public int javaCodeOffsetToLineStartOffset(int line, int jOffset){
|
||||
|
||||
Reference in New Issue
Block a user