zomg, made it work in first attempt *tears of joy*

This commit is contained in:
Manindra Moharana
2013-08-18 02:32:49 +05:30
parent c6cd952e1d
commit aec4d27caf

View File

@@ -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){