@@ -58,7 +58,7 @@ public abstract class AbstractIconRegistry { | |||
protected final AbstractIcon RELATION_REFERENCE_FORWARD = createIcon(STRUCTURE_PATH + "referenceForward.gif"); | |||
protected final AbstractIcon RELATION_REFERENCE_BACK = createIcon(STRUCTURE_PATH + "referenceBack.gif"); | |||
public AbstractIcon getRelationIcon(IRelationship.Kind relationship) { | |||
public AbstractIcon getIcon(IRelationship.Kind relationship) { | |||
if (relationship == IRelationship.Kind.ADVICE) { | |||
return RELATION_ADVICE_FORWARD; | |||
} else if (relationship == IRelationship.Kind.DECLARE) { | |||
@@ -82,7 +82,7 @@ public abstract class AbstractIconRegistry { | |||
* | |||
* @return null if the kind could not be resolved | |||
*/ | |||
public AbstractIcon getStructureIcon(IProgramElement.Kind kind) { | |||
public AbstractIcon getIcon(IProgramElement.Kind kind) { | |||
if (kind == IProgramElement.Kind.PROJECT) { | |||
return PROJECT; | |||
} else if (kind == IProgramElement.Kind.PACKAGE) { |
@@ -36,7 +36,7 @@ public class FileStructureView extends StructureView { | |||
this.sourceFilePath = sourceFile; | |||
} | |||
public void setRootNode(StructureViewNode rootNode) { | |||
public void setRootNode(IStructureViewNode rootNode) { | |||
super.setRootNode(rootNode); | |||
notifyViewUpdated(); | |||
} |
@@ -0,0 +1,81 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 1999-2001 Xerox Corporation, | |||
* 2002 Palo Alto Research Center, Incorporated (PARC). | |||
* All rights reserved. | |||
* This program and the accompanying materials are made available | |||
* under the terms of the Common Public License v1.0 | |||
* which accompanies this distribution and is available at | |||
* http://www.eclipse.org/legal/cpl-v10.html | |||
* | |||
* Contributors: | |||
* Xerox/PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.ajde.ui; | |||
import java.io.*; | |||
import java.util.List; | |||
import org.aspectj.asm.IProgramElement; | |||
/** | |||
* @author Mik Kersten | |||
*/ | |||
public interface IStructureViewNode { | |||
public IProgramElement getStructureNode(); | |||
public AbstractIcon getIcon(); | |||
/** | |||
* Add a child node. | |||
*/ | |||
public void add(IStructureViewNode child); | |||
/** | |||
* Add a child node. | |||
*/ | |||
public void add(IStructureViewNode child, int position); | |||
/** | |||
* Remove a child node. | |||
*/ | |||
public void remove(IStructureViewNode child); | |||
/** | |||
* @return an empty list if there are no children | |||
*/ | |||
public List getChildren(); | |||
public Kind getKind(); | |||
public String getRelationshipName(); | |||
/** | |||
* Uses "typesafe enum" pattern. | |||
*/ | |||
public static class Kind implements Serializable { | |||
public static final Kind DECLARATION = new Kind("declaration"); | |||
public static final Kind RELATIONSHIP = new Kind("relationship"); | |||
public static final Kind LINK = new Kind("link"); | |||
public static final Kind[] ALL = { DECLARATION, RELATIONSHIP, LINK }; | |||
private final String name; | |||
private Kind(String name) { | |||
this.name = name; | |||
} | |||
public String toString() { | |||
return name; | |||
} | |||
// The 4 declarations below are necessary for serialization | |||
private static int nextOrdinal = 0; | |||
private final int ordinal = nextOrdinal++; | |||
private Object readResolve() throws ObjectStreamException { | |||
return ALL[ordinal]; | |||
} | |||
} | |||
} |
@@ -115,7 +115,7 @@ public class StructureModelUtil { | |||
public static List getPackagesInModel() { | |||
List packages = new ArrayList(); | |||
StructureModel model = | |||
Ajde.getDefault().getStructureModelManager().getStructureModel(); | |||
Ajde.getDefault().getStructureModelManager().getModel(); | |||
if (model.equals(StructureModel.NO_STRUCTURE)) { | |||
return null; | |||
} else { |
@@ -34,7 +34,7 @@ public class StructureSearchManager { | |||
IProgramElement.Kind kind) { | |||
List matches = new ArrayList(); | |||
StructureModel model = Ajde.getDefault().getStructureModelManager().getStructureModel(); | |||
StructureModel model = Ajde.getDefault().getStructureModelManager().getModel(); | |||
if (model.equals(StructureModel.NO_STRUCTURE)) { | |||
return null; | |||
} else { |
@@ -23,8 +23,8 @@ import org.aspectj.asm.IProgramElement; | |||
*/ | |||
public abstract class StructureView { | |||
private StructureViewNode rootNode = null; | |||
private StructureViewNode activeNode = null; | |||
private IStructureViewNode rootNode = null; | |||
private IStructureViewNode activeNode = null; | |||
protected StructureViewProperties viewProperties = null; | |||
protected StructureViewRenderer renderer = null; | |||
@@ -32,11 +32,11 @@ public abstract class StructureView { | |||
return viewProperties; | |||
} | |||
public StructureViewNode getRootNode() { | |||
public IStructureViewNode getRootNode() { | |||
return rootNode; | |||
} | |||
public void setRootNode(StructureViewNode rootNode) { | |||
public void setRootNode(IStructureViewNode rootNode) { | |||
this.rootNode = rootNode; | |||
} | |||
@@ -55,7 +55,7 @@ public abstract class StructureView { | |||
/** | |||
* @return the view node corresponding to the active ProgramElementNode or null | |||
*/ | |||
public StructureViewNode getActiveNode() { | |||
public IStructureViewNode getActiveNode() { | |||
if (activeNode != null | |||
&& activeNode.getStructureNode() instanceof IProgramElement) { | |||
return activeNode; | |||
@@ -69,11 +69,11 @@ public abstract class StructureView { | |||
* | |||
* @return the first match | |||
*/ | |||
public StructureViewNode findCorrespondingViewNode(IProgramElement node) { | |||
public IStructureViewNode findCorrespondingViewNode(IProgramElement node) { | |||
return findCorrespondingViewNodeHelper(rootNode, node); | |||
} | |||
private StructureViewNode findCorrespondingViewNodeHelper(StructureViewNode node, IProgramElement pNode) { | |||
private IStructureViewNode findCorrespondingViewNodeHelper(IStructureViewNode node, IProgramElement pNode) { | |||
if (node != null | |||
&& node.getStructureNode() != null | |||
@@ -83,7 +83,7 @@ public abstract class StructureView { | |||
if (node != null && node.getChildren() != null) { | |||
for (Iterator it = node.getChildren().iterator(); it.hasNext(); ) { | |||
StructureViewNode foundNode = findCorrespondingViewNodeHelper((StructureViewNode)it.next(), pNode); | |||
IStructureViewNode foundNode = findCorrespondingViewNodeHelper((IStructureViewNode)it.next(), pNode); | |||
if (foundNode != null) return foundNode; | |||
} | |||
} | |||
@@ -91,12 +91,12 @@ public abstract class StructureView { | |||
return null; | |||
} | |||
public void setActiveNode(StructureViewNode activeNode) { | |||
public void setActiveNode(IStructureViewNode activeNode) { | |||
this.activeNode = activeNode; | |||
if (renderer != null) renderer.setActiveNode(activeNode); | |||
} | |||
public void setActiveNode(StructureViewNode activeNode, int sourceLine) { | |||
public void setActiveNode(IStructureViewNode activeNode, int sourceLine) { | |||
this.activeNode = activeNode; | |||
if (renderer != null) renderer.setActiveNode(activeNode, sourceLine); | |||
} |
@@ -84,7 +84,7 @@ public class StructureViewManager { | |||
* @param newFilePath the canonicalized path to the new file | |||
*/ | |||
public void fireNavigationAction(String newFilePath, int lineNumber) { | |||
IProgramElement currNode = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine( | |||
IProgramElement currNode = Ajde.getDefault().getStructureModelManager().getModel().findNodeForSourceLine( | |||
newFilePath, | |||
lineNumber); | |||
@@ -127,7 +127,7 @@ public class StructureViewManager { | |||
if (defaultFileView.getSourceFile() != null | |||
&& !defaultFileView.getSourceFile().equals(newFilePath)) { | |||
defaultFileView.setSourceFile(newFilePath); | |||
treeViewBuilder.buildView(defaultFileView, StructureModelManager.getDefault().getStructureModel()); | |||
treeViewBuilder.buildView(defaultFileView, StructureModelManager.getDefault().getModel()); | |||
} | |||
} | |||
@@ -137,19 +137,19 @@ public class StructureViewManager { | |||
if (node.getKind().equals(IProgramElement.Kind.CODE)) { | |||
IProgramElement parentNode = (IProgramElement)node.getParent(); | |||
if (parentNode != null) { | |||
StructureViewNode currNode = view.findCorrespondingViewNode(parentNode); | |||
IStructureViewNode currNode = view.findCorrespondingViewNode(parentNode); | |||
int lineOffset = node.getSourceLocation().getLine() - parentNode.getSourceLocation().getLine(); | |||
if (currNode != null) view.setActiveNode(currNode, lineOffset); | |||
} | |||
} else { | |||
StructureViewNode currNode = view.findCorrespondingViewNode(node); | |||
IStructureViewNode currNode = view.findCorrespondingViewNode(node); | |||
if (currNode != null) view.setActiveNode(currNode); | |||
} | |||
} | |||
} | |||
} | |||
private IProgramElement getProgramElementNode(StructureViewNode node) { | |||
private IProgramElement getProgramElementNode(IStructureViewNode node) { | |||
if (node.getStructureNode() instanceof IProgramElement) { | |||
return (IProgramElement)node.getStructureNode(); | |||
// } else if (node.getStructureNode() instanceof LinkNode) { | |||
@@ -160,8 +160,8 @@ public class StructureViewManager { | |||
} | |||
public void refreshView(StructureView view) { | |||
StructureViewNode activeNode = view.getActiveNode(); | |||
treeViewBuilder.buildView(view, Ajde.getDefault().getStructureModelManager().getStructureModel()); | |||
IStructureViewNode activeNode = view.getActiveNode(); | |||
treeViewBuilder.buildView(view, Ajde.getDefault().getStructureModelManager().getModel()); | |||
view.setActiveNode(activeNode); | |||
} | |||
@@ -195,7 +195,7 @@ public class StructureViewManager { | |||
if (properties == null) properties = DEFAULT_VIEW_PROPERTIES; | |||
FileStructureView view = new FileStructureView(properties); | |||
view.setSourceFile(sourceFilePath); | |||
treeViewBuilder.buildView(view, StructureModelManager.getDefault().getStructureModel()); | |||
treeViewBuilder.buildView(view, StructureModelManager.getDefault().getModel()); | |||
structureViews.add(view); | |||
return view; | |||
} |
@@ -1,44 +0,0 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 1999-2001 Xerox Corporation, | |||
* 2002 Palo Alto Research Center, Incorporated (PARC). | |||
* All rights reserved. | |||
* This program and the accompanying materials are made available | |||
* under the terms of the Common Public License v1.0 | |||
* which accompanies this distribution and is available at | |||
* http://www.eclipse.org/legal/cpl-v10.html | |||
* | |||
* Contributors: | |||
* Xerox/PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.ajde.ui; | |||
import java.util.List; | |||
import org.aspectj.asm.IProgramElement; | |||
/** | |||
* @author Mik Kersten | |||
*/ | |||
public interface StructureViewNode { | |||
public IProgramElement getStructureNode(); | |||
public AbstractIcon getIcon(); | |||
/** | |||
* Add a child node. | |||
*/ | |||
public void add(StructureViewNode child); | |||
/** | |||
* Remove a child node. | |||
*/ | |||
public void remove(StructureViewNode child); | |||
/** | |||
* @return an empty list if there are no children | |||
*/ | |||
public List getChildren(); | |||
} |
@@ -14,7 +14,7 @@ | |||
package org.aspectj.ajde.ui; | |||
import java.util.List; | |||
import java.util.*; | |||
import org.aspectj.asm.*; | |||
@@ -29,40 +29,47 @@ public abstract class StructureViewNodeFactory { | |||
this.iconRegistry = iconRegistry; | |||
} | |||
public StructureViewNode createNode(IProgramElement node) { | |||
public IStructureViewNode createNode(IProgramElement node) { | |||
return createNode(node, null); | |||
} | |||
public StructureViewNode createNode(IProgramElement node, List children) { | |||
AbstractIcon icon; | |||
// if (node instanceof IProgramElement) { | |||
// IProgramElement pNode = (IProgramElement)node; | |||
icon = iconRegistry.getStructureIcon(node.getKind(), node.getAccessibility()); | |||
// } else if (node instanceof IRelationship) { | |||
// IRelationship relationNode = (IRelationship)node; | |||
// icon = iconRegistry.getRelationIcon(relationNode.getKind()); | |||
//// } else if (node instanceof LinkNode) { | |||
//// LinkNode linkNode = (LinkNode)node; | |||
//// icon = iconRegistry.getStructureIcon( | |||
//// linkNode.getProgramElementNode().getProgramElementKind(), | |||
//// linkNode.getProgramElementNode().getAccessibility()); | |||
// } else { | |||
// icon = new AbstractIcon(null); | |||
// } | |||
// node.setChildren(children); | |||
return createConcreteNode(node, icon, children); | |||
} | |||
public IStructureViewNode createNode(IProgramElement node, List children) { | |||
AbstractIcon icon = iconRegistry.getStructureIcon(node.getKind(), node.getAccessibility()); | |||
public StructureViewNode createNode(IRelationship relationship) { | |||
AbstractIcon icon; | |||
icon = iconRegistry.getRelationIcon(relationship.getKind()); | |||
return createConcreteNode(relationship, icon); | |||
IStructureViewNode svNode = createDeclaration(node, icon, children); | |||
IRelationship rel = StructureModelManager.getDefault().getMapper().get(node); | |||
if (rel != null && rel.getTargets().size() > 0) { | |||
IStructureViewNode relNode = createRelationship( | |||
rel, | |||
iconRegistry.getIcon(rel.getKind()) | |||
); | |||
svNode.add(relNode, 0); | |||
for (Iterator it = rel.getTargets().iterator(); it.hasNext(); ) { | |||
IProgramElement link = (IProgramElement)it.next(); | |||
IStructureViewNode linkNode = createLink( | |||
link, | |||
iconRegistry.getIcon(link.getKind()) | |||
); | |||
relNode.add(linkNode); | |||
} | |||
} | |||
return svNode; | |||
} | |||
/** | |||
* Implementors must override this method in order to create link new nodes. | |||
*/ | |||
protected abstract IStructureViewNode createLink(IProgramElement node, AbstractIcon icon); | |||
protected abstract StructureViewNode createConcreteNode(IRelationship relationship, AbstractIcon icon); | |||
/** | |||
* Implementors must override this method in order to create new relationship nodes. | |||
*/ | |||
protected abstract IStructureViewNode createRelationship(IRelationship relationship, AbstractIcon icon); | |||
/** | |||
* Implementors must override this method in order to create new nodes. | |||
*/ | |||
protected abstract StructureViewNode createConcreteNode(IProgramElement node, AbstractIcon icon, List children); | |||
protected abstract IStructureViewNode createDeclaration(IProgramElement node, AbstractIcon icon, List children); | |||
} |
@@ -36,7 +36,7 @@ public interface StructureViewRenderer extends EventListener { | |||
* the corresponding node's sourceline to be highlighted in the | |||
* active editor. | |||
*/ | |||
public void setActiveNode(StructureViewNode node); | |||
public void setActiveNode(IStructureViewNode node); | |||
/** | |||
* Same behavior as <CODE>setActiveNode(StructureViewNode)</CODE> but | |||
@@ -45,5 +45,5 @@ public interface StructureViewRenderer extends EventListener { | |||
* @param lineOffset number of lines after the begin and before the | |||
* end line of the corresponding <CODE>StructureNode</CODE>. | |||
*/ | |||
public void setActiveNode(StructureViewNode activeNode, int lineOffset); | |||
public void setActiveNode(IStructureViewNode activeNode, int lineOffset); | |||
} |
@@ -50,7 +50,7 @@ public class TreeStructureViewBuilder { | |||
modelRoot = model.getRoot(); | |||
} | |||
StructureViewNode viewRoot = null; | |||
IStructureViewNode viewRoot = null; | |||
if (!isFileView(view)) { | |||
StructureViewProperties.Hierarchy hierarchy | |||
= ((GlobalStructureView)view).getGlobalViewProperties().getHierarchy(); | |||
@@ -75,7 +75,7 @@ public class TreeStructureViewBuilder { | |||
view.setRootNode(viewRoot); | |||
} | |||
private void addPackageNode(StructureView view, StructureViewNode viewRoot) { | |||
private void addPackageNode(StructureView view, IStructureViewNode viewRoot) { | |||
if (isFileView(view)) { | |||
// IProgramElement fileNode = viewRoot.getStructureNode(); | |||
// IProgramElement parentNode = fileNode.getParent(); | |||
@@ -93,7 +93,7 @@ public class TreeStructureViewBuilder { | |||
} | |||
} | |||
private StructureViewNode createViewNode(IProgramElement node, StructureViewProperties properties) { | |||
private IStructureViewNode createViewNode(IProgramElement node, StructureViewProperties properties) { | |||
if (node == null) return null; | |||
List children = new ArrayList(); | |||
// IProgramElement pNode = node; | |||
@@ -122,7 +122,7 @@ public class TreeStructureViewBuilder { | |||
} | |||
} | |||
StructureViewNode viewNode = nodeFactory.createNode(node, children);//new TreeViewNode(root, null, children); | |||
IStructureViewNode viewNode = nodeFactory.createNode(node, children);//new TreeViewNode(root, null, children); | |||
return viewNode; | |||
} | |||
@@ -188,18 +188,18 @@ public class TreeStructureViewBuilder { | |||
return true; | |||
} | |||
private void sortView(StructureViewNode node, Comparator comparator) { | |||
private void sortView(IStructureViewNode node, Comparator comparator) { | |||
if (node == null || node.getChildren() == null) return; | |||
Collections.sort(node.getChildren(), comparator); | |||
for (Iterator it = node.getChildren().iterator(); it.hasNext(); ) { | |||
StructureViewNode nextNode = (StructureViewNode)it.next(); | |||
IStructureViewNode nextNode = (IStructureViewNode)it.next(); | |||
if (nextNode != null) sortView(nextNode, comparator); | |||
} | |||
} | |||
private StructureViewNode buildCustomTree(GlobalStructureView view, StructureModel model) { | |||
private IStructureViewNode buildCustomTree(GlobalStructureView view, StructureModel model) { | |||
IProgramElement rootNode = model.getRoot(); | |||
StructureViewNode treeNode = nodeFactory.createNode(rootNode); | |||
IStructureViewNode treeNode = nodeFactory.createNode(rootNode); | |||
List rootNodes = new ArrayList(); | |||
getRoots(rootNode, rootNodes, view.getGlobalViewProperties().getHierarchy()); | |||
@@ -256,8 +256,8 @@ public class TreeStructureViewBuilder { | |||
} | |||
} | |||
private StructureViewNode getInheritanceChildren(IProgramElement node, List associations) { | |||
StructureViewNode treeNode = nodeFactory.createNode(node); | |||
private IStructureViewNode getInheritanceChildren(IProgramElement node, List associations) { | |||
IStructureViewNode treeNode = nodeFactory.createNode(node); | |||
//StructureViewNode treeNode = new StructureViewNodeAdapter(node); | |||
List relations = ((IProgramElement)node).getRelations(); | |||
throw new RuntimeException("unimplemented"); | |||
@@ -280,9 +280,9 @@ public class TreeStructureViewBuilder { | |||
// return treeNode; | |||
} | |||
private StructureViewNode getCrosscuttingChildren(IProgramElement node) { | |||
private IStructureViewNode getCrosscuttingChildren(IProgramElement node) { | |||
//StructureViewNodeAdapter treeNode = new StructureViewNodeAdapter(node); | |||
StructureViewNode treeNode = nodeFactory.createNode(node); | |||
IStructureViewNode treeNode = nodeFactory.createNode(node); | |||
List relations = ((IProgramElement)node).getRelations(); | |||
throw new RuntimeException("unimplemented"); | |||
// if (relations != null) { | |||
@@ -313,9 +313,9 @@ public class TreeStructureViewBuilder { | |||
// return treeNode; | |||
} | |||
private StructureViewNode buildTree(IProgramElement node, List associations) { | |||
private IStructureViewNode buildTree(IProgramElement node, List associations) { | |||
//StructureViewNode treeNode = new StructureViewNodeAdapter(node); | |||
StructureViewNode treeNode = nodeFactory.createNode(node); | |||
IStructureViewNode treeNode = nodeFactory.createNode(node); | |||
// if (node instanceof IProgramElement) { | |||
// List relations = ((IProgramElement)node).getRelations(); | |||
// if (relations != null) { | |||
@@ -345,7 +345,7 @@ public class TreeStructureViewBuilder { | |||
} | |||
//sortNodes(childList); | |||
for (Iterator it = childList.iterator(); it.hasNext(); ) { | |||
treeNode.add((StructureViewNode)it.next()); | |||
treeNode.add((IStructureViewNode)it.next()); | |||
} | |||
} | |||
@@ -353,24 +353,25 @@ public class TreeStructureViewBuilder { | |||
return treeNode; | |||
} | |||
private StructureViewNode getRelations(IRelationship node) { | |||
private IStructureViewNode getRelations(IRelationship node) { | |||
return null; | |||
//StructureViewNode treeNode = new StructureViewNode(node); | |||
StructureViewNode treeNode = nodeFactory.createNode(node); | |||
// IStructureViewNode treeNode = nodeFactory.c(node); | |||
// for (Iterator it = node.getTargets().iterator(); it.hasNext(); ) { | |||
// treeNode.add( | |||
// nodeFactory.createNode((IProgramElement)it.next()) | |||
// ); | |||
// } | |||
return treeNode; | |||
// } | |||
// return treeNode; | |||
} | |||
/** | |||
* For debugging only. | |||
*/ | |||
private void dumpView(StructureViewNode root, int level) { | |||
private void dumpView(IStructureViewNode root, int level) { | |||
System.out.println(root.getStructureNode()); | |||
for (Iterator it = root.getChildren().iterator(); it.hasNext(); ) { | |||
dumpView((StructureViewNode)it.next(), level++); | |||
dumpView((IStructureViewNode)it.next(), level++); | |||
} | |||
for (int i = 0; i < level; i++) { | |||
System.out.print(' '); | |||
@@ -379,8 +380,8 @@ public class TreeStructureViewBuilder { | |||
private static final Comparator ALPHABETICAL_COMPARATOR = new Comparator() { | |||
public int compare(Object o1, Object o2) { | |||
IProgramElement sv1 = ((StructureViewNode)o1).getStructureNode(); | |||
IProgramElement sv2 = ((StructureViewNode)o2).getStructureNode(); | |||
IProgramElement sv1 = ((IStructureViewNode)o1).getStructureNode(); | |||
IProgramElement sv2 = ((IStructureViewNode)o2).getStructureNode(); | |||
if (sv1 instanceof IProgramElement && sv2 instanceof IProgramElement) { | |||
IProgramElement p1 = (IProgramElement)sv1; | |||
IProgramElement p2 = (IProgramElement)sv2; | |||
@@ -393,8 +394,8 @@ public class TreeStructureViewBuilder { | |||
private static final Comparator DECLARATIONAL_COMPARATOR = new Comparator() { | |||
public int compare(Object o1, Object o2) { | |||
IProgramElement sv1 = ((StructureViewNode)o1).getStructureNode(); | |||
IProgramElement sv2 = ((StructureViewNode)o2).getStructureNode(); | |||
IProgramElement sv1 = ((IStructureViewNode)o1).getStructureNode(); | |||
IProgramElement sv2 = ((IStructureViewNode)o2).getStructureNode(); | |||
if (sv1 instanceof IProgramElement && sv2 instanceof IProgramElement) { | |||
IProgramElement p1 = (IProgramElement)sv1; | |||
IProgramElement p2 = (IProgramElement)sv2; |
@@ -111,7 +111,7 @@ public class BrowserStructureViewToolPanel extends JPanel { | |||
for (int i = 0; i < kinds.length; i++) { | |||
if (kinds[i].isMemberKind()) { | |||
CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(kinds[i]); | |||
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getStructureIcon(kinds[i]).getIconResource()); | |||
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(kinds[i]).getIconResource()); | |||
filterMenu.add(menuItem); | |||
} | |||
} | |||
@@ -132,7 +132,7 @@ public class BrowserStructureViewToolPanel extends JPanel { | |||
for (Iterator it = relations.iterator(); it.hasNext(); ) { | |||
IRelationship.Kind relation = (IRelationship.Kind)it.next(); | |||
CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(relation); | |||
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getRelationIcon(relation).getIconResource()); | |||
menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(relation).getIconResource()); | |||
relationsMenu.add(menuItem); | |||
} | |||
@@ -30,7 +30,7 @@ import javax.swing.event.ChangeListener; | |||
import org.aspectj.ajde.Ajde; | |||
import org.aspectj.ajde.ui.GlobalStructureView; | |||
import org.aspectj.ajde.ui.StructureView; | |||
import org.aspectj.ajde.ui.StructureViewNode; | |||
import org.aspectj.ajde.ui.IStructureViewNode; | |||
import org.aspectj.ajde.ui.StructureViewProperties; | |||
import org.aspectj.ajde.ui.StructureViewRenderer; | |||
@@ -82,11 +82,11 @@ public class BrowserViewPanel extends JPanel implements StructureViewRenderer { | |||
} | |||
} | |||
public void setActiveNode(StructureViewNode node) { | |||
public void setActiveNode(IStructureViewNode node) { | |||
throw new RuntimeException("not implemented"); | |||
} | |||
public void setActiveNode(StructureViewNode activeNode, int lineOffset) { | |||
public void setActiveNode(IStructureViewNode activeNode, int lineOffset) { | |||
throw new RuntimeException("not implemented"); | |||
} | |||
@@ -47,7 +47,7 @@ public class BuildConfigPopupMenu extends JPopupMenu { | |||
action.actionPerformed(e); | |||
} | |||
}); | |||
buildItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getStructureIcon(IProgramElement.Kind.FILE_LST).getIconResource()); | |||
buildItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(IProgramElement.Kind.FILE_LST).getIconResource()); | |||
this.add(buildItem); | |||
} | |||
} |
@@ -109,11 +109,11 @@ public class IconRegistry extends AbstractIconRegistry { | |||
public Icon getStructureViewIcon() { return STRUCTURE_VIEW; } | |||
public Icon getAssociationSwingIcon(IRelationship.Kind relation) { | |||
return convertToSwingIcon(getRelationIcon(relation)); | |||
return convertToSwingIcon(getIcon(relation)); | |||
} | |||
protected AbstractIcon getStructureIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility) { | |||
return getStructureIcon(kind); | |||
return getIcon(kind); | |||
} | |||
public Icon getStructureSwingIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility) { | |||
@@ -121,7 +121,7 @@ public class IconRegistry extends AbstractIconRegistry { | |||
} | |||
public Icon getStructureSwingIcon(IProgramElement.Kind kind) { | |||
return convertToSwingIcon(getStructureIcon(kind)); | |||
return convertToSwingIcon(getIcon(kind)); | |||
} | |||
public Icon getAccessibilitySwingIcon(IProgramElement.Accessibility accessibility) { |
@@ -84,11 +84,11 @@ public class StructureViewPanel extends JPanel implements StructureViewRenderer | |||
view.setRenderer(this); | |||
} | |||
public void setActiveNode(StructureViewNode node) { | |||
public void setActiveNode(IStructureViewNode node) { | |||
setActiveNode(node, 0); | |||
} | |||
public void setActiveNode(StructureViewNode node, int lineOffset) { | |||
public void setActiveNode(IStructureViewNode node, int lineOffset) { | |||
if (node == null) return; | |||
if (!(node.getStructureNode() instanceof IProgramElement)) return; | |||
IProgramElement pNode = (IProgramElement)node.getStructureNode(); |
@@ -19,20 +19,27 @@ import java.util.*; | |||
import javax.swing.tree.DefaultMutableTreeNode; | |||
import org.aspectj.ajde.ui.*; | |||
import org.aspectj.ajde.ui.IStructureViewNode.Kind; | |||
import org.aspectj.asm.*; | |||
/** | |||
* @author Mik Kersten | |||
*/ | |||
public class SwingTreeViewNode extends DefaultMutableTreeNode implements StructureViewNode { | |||
public class SwingTreeViewNode extends DefaultMutableTreeNode implements IStructureViewNode { | |||
private String relationshipName; | |||
private IProgramElement programElement; | |||
private AbstractIcon icon; | |||
private IStructureViewNode.Kind kind; | |||
/** | |||
* Create a declaration node. | |||
*/ | |||
public SwingTreeViewNode(IProgramElement programElement, AbstractIcon icon, List children) { | |||
super(programElement, true); | |||
this.programElement = programElement; | |||
this.icon = icon; | |||
this.kind = Kind.DECLARATION; | |||
if (children != null) { | |||
for (Iterator it = children.iterator(); it.hasNext(); ) { | |||
@@ -41,17 +48,24 @@ public class SwingTreeViewNode extends DefaultMutableTreeNode implements Structu | |||
} | |||
} | |||
/** | |||
* Create a relationship node. | |||
*/ | |||
public SwingTreeViewNode(IRelationship relationship, AbstractIcon icon) { | |||
// super(IProgramElement, true); | |||
throw new RuntimeException("unimplemented"); | |||
// this.IProgramElement = IProgramElement; | |||
// this.icon = icon; | |||
// | |||
// if (children != null) { | |||
// for (Iterator it = children.iterator(); it.hasNext(); ) { | |||
// super.add((SwingTreeViewNode)it.next()); | |||
// } | |||
// } | |||
super(null, true); | |||
this.icon = icon; | |||
this.kind = Kind.RELATIONSHIP; | |||
this.relationshipName = relationship.getName(); | |||
} | |||
/** | |||
* Create a link. | |||
*/ | |||
public SwingTreeViewNode(IProgramElement programElement, AbstractIcon icon) { | |||
super(programElement, false); | |||
this.programElement = programElement; | |||
this.kind = Kind.LINK; | |||
this.icon = icon; | |||
} | |||
public IProgramElement getStructureNode() { | |||
@@ -62,11 +76,15 @@ public class SwingTreeViewNode extends DefaultMutableTreeNode implements Structu | |||
return icon; | |||
} | |||
public void add(StructureViewNode child) { | |||
public void add(IStructureViewNode child) { | |||
super.add((DefaultMutableTreeNode)child); | |||
} | |||
public void add(IStructureViewNode child, int position) { | |||
super.insert((DefaultMutableTreeNode)child, position); | |||
} | |||
public void remove(StructureViewNode child) { | |||
public void remove(IStructureViewNode child) { | |||
super.remove((DefaultMutableTreeNode)child); | |||
} | |||
@@ -77,5 +95,22 @@ public class SwingTreeViewNode extends DefaultMutableTreeNode implements Structu | |||
return children; | |||
} | |||
} | |||
public Kind getKind() { | |||
return kind; | |||
} | |||
public String getRelationshipName() { | |||
return relationshipName; | |||
} | |||
public String toString() { | |||
if (kind == IStructureViewNode.Kind.RELATIONSHIP) { | |||
return relationshipName; | |||
} else { | |||
return programElement.getName(); | |||
} | |||
} | |||
} | |||
@@ -28,12 +28,21 @@ public class SwingTreeViewNodeFactory extends StructureViewNodeFactory { | |||
public SwingTreeViewNodeFactory(IconRegistry iconRegistry) { | |||
super(iconRegistry); | |||
} | |||
protected StructureViewNode createConcreteNode(IProgramElement node, AbstractIcon icon, List children) { | |||
protected IStructureViewNode createDeclaration( | |||
IProgramElement node, | |||
AbstractIcon icon, | |||
List children) { | |||
return new SwingTreeViewNode(node, icon, children); | |||
} | |||
protected StructureViewNode createConcreteNode( | |||
protected IStructureViewNode createLink( | |||
IProgramElement node, | |||
AbstractIcon icon) { | |||
return new SwingTreeViewNode(node, icon); | |||
} | |||
protected IStructureViewNode createRelationship( | |||
IRelationship relationship, | |||
AbstractIcon icon) { | |||
return new SwingTreeViewNode(relationship, icon); |
@@ -19,6 +19,7 @@ import java.awt.*; | |||
import javax.swing.*; | |||
import javax.swing.tree.DefaultTreeCellRenderer; | |||
import org.aspectj.ajde.ui.IStructureViewNode; | |||
import org.aspectj.asm.*; | |||
import org.aspectj.bridge.*; | |||
@@ -34,41 +35,39 @@ class SwingTreeViewNodeRenderer extends DefaultTreeCellRenderer { | |||
boolean leaf, | |||
int row, | |||
boolean hasFocus) { | |||
if (treeNode == null) return null; | |||
if (treeNode == null) return null; | |||
this.setFont(StructureTree.DEFAULT_FONT); | |||
SwingTreeViewNode viewNode = (SwingTreeViewNode)treeNode; | |||
IProgramElement node = viewNode.getStructureNode(); | |||
// if (node instanceof LinkNode) { | |||
// ISourceLocation sourceLoc = ((LinkNode)node).getProgramElementNode().getSourceLocation(); | |||
// if ((null != sourceLoc) | |||
// && (null != sourceLoc.getSourceFile().getAbsolutePath())) { | |||
// setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_COLOR); | |||
// } else { | |||
// setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_NO_SOURCE_COLOR); | |||
// } | |||
// } else { | |||
setTextNonSelectionColor(new Color(0, 0, 0)); | |||
// } | |||
super.getTreeCellRendererComponent(tree, treeNode, sel, expanded, leaf, row, hasFocus); | |||
this.setFont(StructureTree.DEFAULT_FONT); | |||
if (viewNode.getKind() == IStructureViewNode.Kind.LINK) { | |||
ISourceLocation sourceLoc = node.getSourceLocation(); | |||
if ((null != sourceLoc) | |||
&& (null != sourceLoc.getSourceFile().getAbsolutePath())) { | |||
setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_COLOR); | |||
} else { | |||
setTextNonSelectionColor(AjdeWidgetStyles.LINK_NODE_NO_SOURCE_COLOR); | |||
} | |||
} else if (viewNode.getKind() == IStructureViewNode.Kind.RELATIONSHIP) { | |||
this.setFont(new Font(this.getFont().getName(), Font.ITALIC, this.getFont().getSize())); | |||
setTextNonSelectionColor(new Color(0, 0, 0)); | |||
} else if (viewNode.getKind() == IStructureViewNode.Kind.DECLARATION) { | |||
setTextNonSelectionColor(new Color(0, 0, 0)); | |||
} | |||
super.getTreeCellRendererComponent(tree, treeNode, sel, expanded, leaf, row, hasFocus); | |||
if (viewNode.getIcon() != null && viewNode.getIcon().getIconResource() != null) { | |||
setIcon((Icon)viewNode.getIcon().getIconResource()); | |||
} else { | |||
setIcon(null); | |||
} | |||
if (node instanceof IProgramElement) { | |||
// if (pNode.isRunnable()) { | |||
// //setIcon(AjdeUIManager.getDefault().getIconRegistry().getExecuteIcon()); | |||
// } | |||
// if (pNode.isImplementor()) { | |||
// //this.setText("<implementor>"); | |||
// } | |||
// if (pNode.isOverrider()) { | |||
// //this.setText("<overrider>"); | |||
// } | |||
if (node != null) { | |||
if (node.isRunnable()) { | |||
setIcon(AjdeUIManager.getDefault().getIconRegistry().getExecuteIcon()); | |||
} | |||
if (node.getMessage() != null) { | |||
if (node.getMessage().getKind().equals(IMessage.WARNING)) { | |||
setIcon(AjdeUIManager.getDefault().getIconRegistry().getWarningIcon()); | |||
@@ -79,10 +78,7 @@ class SwingTreeViewNodeRenderer extends DefaultTreeCellRenderer { | |||
} | |||
} | |||
} | |||
// else if (node instanceof IRelationship) { | |||
// this.setFont(new Font(this.getFont().getName(), Font.ITALIC, this.getFont().getSize())); | |||
// } | |||
} | |||
return this; | |||
} | |||
} |
@@ -254,7 +254,7 @@ public class TreeViewBuildConfigEditor extends JPanel implements BuildConfigEdit | |||
} else if (kind.equals(BuildConfigNode.Kind.DIRECTORY)) { | |||
setIcon(AjdeUIManager.getDefault().getIconRegistry().getStructureSwingIcon(IProgramElement.Kind.PACKAGE)); | |||
} else { | |||
setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getStructureIcon(IProgramElement.Kind.ERROR).getIconResource()); | |||
setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getIcon(IProgramElement.Kind.ERROR).getIconResource()); | |||
p.remove(cbox); | |||
} | |||
@@ -36,19 +36,35 @@ class SubPoint extends Point { } | |||
class Line { } | |||
aspect AdvisesRelationshipCoverage { | |||
pointcut executionP(): execution(void Point.setX(int)); | |||
before(): executionP() { } | |||
before(): execution(*..*.new(..)) { } | |||
before(): get(int *.*) { } | |||
before(): set(int *.*) { } | |||
before(): initialization(Point.new(..)) { } | |||
before(): staticinitialization(Point) { } | |||
before(): handler(IOException) { } | |||
before(): call(* Point.setX(int)) { } | |||
before(): call(Point.new()) { } | |||
before(): within(*) && execution(* Point.setX(..)) { } | |||
before(): within(*) && execution(Point.new()) { } | |||
pointcut methodExecutionP(): execution(void Point.setX(int)); | |||
before(): methodExecutionP() { } | |||
pointcut constructorExecutionP(): execution(Point.new()); | |||
before(): constructorExecutionP() { } | |||
pointcut callMethodP(): call(* Point.setX(int)); | |||
before(): callMethodP() { } | |||
pointcut callConstructorP(): call(Point.new()); | |||
before(): callConstructorP() { } | |||
pointcut getP(): get(int *.*); | |||
before(): getP() { } | |||
pointcut setP(): set(int *.*); | |||
before(): setP() { } | |||
pointcut initializationP(): initialization(Point.new(..)); | |||
before(): initializationP() { } | |||
pointcut staticinitializationP(): staticinitialization(Point); | |||
before(): staticinitializationP() { } | |||
pointcut handlerP(): handler(IOException); | |||
before(): handlerP() { } | |||
// before(): within(*) && execution(* Point.setX(..)) { } | |||
// before(): within(*) && execution(Point.new()) { } | |||
} | |||
aspect AdviceNamingCoverage { |
@@ -29,7 +29,7 @@ public class AjdeTests extends TestCase { | |||
suite.addTestSuite(CompilerMessagesTest.class); | |||
suite.addTestSuite(AsmDeclarationsTest.class); | |||
suite.addTestSuite(AsmRelationshipsTest.class); | |||
// suite.addTestSuite(ResourceCopyTestCase.class); | |||
suite.addTestSuite(ResourceCopyTestCase.class); | |||
//$JUnit-END$ | |||
return suite; |
@@ -47,7 +47,7 @@ public class AsmDeclarationsTest extends AjdeTestCase { | |||
IProgramElement node = (IProgramElement)model.getRoot(); | |||
assertNotNull(node); | |||
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "InterTypeDecCoverage"); | |||
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "InterTypeDecCoverage"); | |||
assertNotNull(aspect); | |||
String decErrMessage = "declare error: \"Illegal construct..\""; | |||
@@ -90,7 +90,7 @@ public class AsmDeclarationsTest extends AjdeTestCase { | |||
IProgramElement node = (IProgramElement)model.getRoot(); | |||
assertNotNull(node); | |||
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "InterTypeDecCoverage"); | |||
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "InterTypeDecCoverage"); | |||
assertNotNull(aspect); | |||
String fieldMsg = "Point.xxx"; | |||
@@ -114,7 +114,7 @@ public class AsmDeclarationsTest extends AjdeTestCase { | |||
IProgramElement node = (IProgramElement)model.getRoot(); | |||
assertNotNull(node); | |||
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdviceNamingCoverage"); | |||
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "AdviceNamingCoverage"); | |||
assertNotNull(aspect); | |||
String ptct = "named()"; | |||
@@ -134,7 +134,7 @@ public class AsmDeclarationsTest extends AjdeTestCase { | |||
IProgramElement node = (IProgramElement)model.getRoot(); | |||
assertNotNull(node); | |||
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AbstractAspect"); | |||
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "AbstractAspect"); | |||
assertNotNull(aspect); | |||
String abst = "abPtct()"; | |||
@@ -147,7 +147,7 @@ public class AsmDeclarationsTest extends AjdeTestCase { | |||
IProgramElement node = (IProgramElement)model.getRoot(); | |||
assertNotNull(node); | |||
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdviceNamingCoverage"); | |||
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, "AdviceNamingCoverage"); | |||
assertNotNull(aspect); | |||
String anon = "before(): <anonymous pointcut>"; | |||
@@ -189,7 +189,7 @@ public class AsmDeclarationsTest extends AjdeTestCase { | |||
protected void setUp() throws Exception { | |||
super.setUp("examples"); | |||
assertTrue("build success", doSynchronousBuild(CONFIG_FILE_PATH)); | |||
model = StructureModelManager.getDefault().getStructureModel(); | |||
model = StructureModelManager.getDefault().getModel(); | |||
} | |||
protected void tearDown() throws Exception { |
@@ -11,59 +11,62 @@ | |||
package org.aspectj.ajde; | |||
import java.util.Iterator; | |||
import java.util.List; | |||
import org.aspectj.ajdt.internal.core.builder.AsmNodeFormatter; | |||
import org.aspectj.asm.*; | |||
import org.aspectj.asm.IProgramElement.Kind; | |||
// TODO: check for return types | |||
public class AsmRelationshipsTest extends AjdeTestCase { | |||
private StructureModel model = null; | |||
private StructureModelManager manager = null; | |||
private static final String CONFIG_FILE_PATH = "../examples/coverage/coverage.lst"; | |||
public AsmRelationshipsTest(String name) { | |||
super(name); | |||
} | |||
public void testExecution() { | |||
IProgramElement node = (IProgramElement)model.getRoot(); | |||
public void testAdvice() { | |||
IProgramElement node = (IProgramElement)manager.getModel().getRoot(); | |||
assertNotNull(node); | |||
IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdvisesRelationshipCoverage"); | |||
checkMapping("AdvisesRelationshipCoverage", "Point", "before(): methodExecutionP..", "setX(int)"); | |||
checkUniDirectionalMapping("AdvisesRelationshipCoverage", "Point", "before(): getP..", "field-get(int Point.x)"); | |||
checkUniDirectionalMapping("AdvisesRelationshipCoverage", "Point", "before(): setP..", "field-set(int Point.xxx)"); | |||
} | |||
private void checkUniDirectionalMapping(String fromType, String toType, String from, String to) { | |||
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, fromType); | |||
assertNotNull(aspect); | |||
String beforeExec = from; | |||
IProgramElement beforeExecNode = manager.getModel().findNode(aspect, IProgramElement.Kind.ADVICE, beforeExec); | |||
assertNotNull(beforeExecNode); | |||
IRelationship rel = manager.getMapper().get(beforeExecNode); | |||
assertEquals(((IProgramElement)rel.getTargets().get(0)).getName(), to); | |||
} | |||
String beforeExec = "before(): executionP.."; | |||
IProgramElement beforeExecNode = model.findNode(aspect, IProgramElement.Kind.ADVICE, beforeExec); | |||
private void checkMapping(String fromType, String toType, String from, String to) { | |||
IProgramElement aspect = StructureModelManager.getDefault().getModel().findNodeForType(null, fromType); | |||
assertNotNull(aspect); | |||
String beforeExec = from; | |||
IProgramElement beforeExecNode = manager.getModel().findNode(aspect, IProgramElement.Kind.ADVICE, beforeExec); | |||
assertNotNull(beforeExecNode); | |||
// System.err.println("> root: " + node); | |||
// assertEquals(ptctNode.getName(), ptct); | |||
// | |||
// IProgramElement aspect = StructureModelManager.getDefault().getStructureModel().findNodeForClass(null, "AdviceNamingCoverage"); | |||
// assertNotNull(aspect); | |||
// fail(); | |||
// | |||
// String params = "namedWithArgs(int, int)"; | |||
// IProgramElement paramsNode = model.findNode(aspect, IProgramElement.Kind.POINTCUT, params); | |||
// assertNotNull(paramsNode); | |||
// assertEquals(paramsNode.getName(), params); | |||
IRelationship rel = manager.getMapper().get(beforeExecNode); | |||
assertEquals(((IProgramElement)rel.getTargets().get(0)).getName(), to); | |||
IProgramElement clazz = StructureModelManager.getDefault().getModel().findNodeForType(null, toType); | |||
assertNotNull(clazz); | |||
String set = to; | |||
IProgramElement setNode = manager.getModel().findNode(clazz, IProgramElement.Kind.METHOD, set); | |||
assertNotNull(setNode); | |||
IRelationship rel2 = manager.getMapper().get(setNode); | |||
assertEquals(((IProgramElement)rel2.getTargets().get(0)).getName(), from); | |||
} | |||
protected void setUp() throws Exception { | |||
super.setUp("examples"); | |||
assertTrue("build success", doSynchronousBuild(CONFIG_FILE_PATH)); | |||
model = StructureModelManager.getDefault().getStructureModel(); | |||
manager = StructureModelManager.getDefault(); | |||
} | |||
protected void tearDown() throws Exception { |
@@ -50,7 +50,7 @@ public class StructureModelRegressionTest extends AjdeTestCase { | |||
if (modelFile.exists()) { | |||
Ajde.getDefault().getStructureModelManager().readStructureModel(lstFile); | |||
StructureModel savedModel = Ajde.getDefault().getStructureModelManager().getStructureModel(); | |||
StructureModel savedModel = Ajde.getDefault().getStructureModelManager().getModel(); | |||
//System.err.println( savedModel.getRoot().getClass() + ", " + savedModel.getRoot()); | |||
// AMC This test will not pass as written until IProgramElement defines | |||
@@ -100,7 +100,7 @@ public class StructureModelRegressionTest extends AjdeTestCase { | |||
Thread.sleep(300); | |||
} catch (InterruptedException ie) { } | |||
} | |||
return Ajde.getDefault().getStructureModelManager().getStructureModel(); | |||
return Ajde.getDefault().getStructureModelManager().getModel(); | |||
} | |||
protected void setUp() throws Exception { | |||
@@ -109,7 +109,7 @@ public class StructureModelRegressionTest extends AjdeTestCase { | |||
} | |||
public void testModelExists() { | |||
assertTrue(Ajde.getDefault().getStructureModelManager().getStructureModel() != null); | |||
assertTrue(Ajde.getDefault().getStructureModelManager().getModel() != null); | |||
} | |||
protected void tearDown() throws Exception { |
@@ -78,7 +78,7 @@ public class StructureModelTest extends AjdeTestCase { | |||
public void testRootForSourceFile() throws IOException { | |||
File testFile = openFile("figures-coverage/figures/Figure.java"); | |||
IProgramElement node = Ajde.getDefault().getStructureModelManager().getStructureModel().findRootNodeForSourceFile( | |||
IProgramElement node = Ajde.getDefault().getStructureModelManager().getModel().findRootNodeForSourceFile( | |||
testFile.getCanonicalPath()); | |||
assertTrue("find result", node != null) ; | |||
IProgramElement pNode = (IProgramElement)node; | |||
@@ -89,7 +89,7 @@ public class StructureModelTest extends AjdeTestCase { | |||
public void testPointcutName() throws IOException { | |||
File testFile = openFile("figures-coverage/figures/Main.java"); | |||
//System.err.println("PointcutName, testFile: " + testFile.getCanonicalPath() + " exists: " + testFile.exists()); | |||
IProgramElement node = Ajde.getDefault().getStructureModelManager().getStructureModel().findRootNodeForSourceFile( | |||
IProgramElement node = Ajde.getDefault().getStructureModelManager().getModel().findRootNodeForSourceFile( | |||
testFile.getCanonicalPath()); | |||
//System.err.println(" node: " + node); | |||
assertTrue("find result", node != null) ; | |||
@@ -107,7 +107,7 @@ public class StructureModelTest extends AjdeTestCase { | |||
public void testFileNodeFind() throws IOException { | |||
File testFile = openFile("figures-coverage/figures/Main.java"); | |||
//System.err.println("NodeFind, testFile: " + testFile.getCanonicalPath() + " exists: " + testFile.exists()); | |||
IProgramElement node = Ajde.getDefault().getStructureModelManager().getStructureModel().findNodeForSourceLine( | |||
IProgramElement node = Ajde.getDefault().getStructureModelManager().getModel().findNodeForSourceLine( | |||
testFile.getCanonicalPath(), 1); | |||
//System.err.println(" node: " + node); | |||
assertTrue("find result", node != null) ; | |||
@@ -120,7 +120,7 @@ public class StructureModelTest extends AjdeTestCase { | |||
* @todo add negative test to make sure things that aren't runnable aren't annotated | |||
*/ | |||
public void testMainClassNodeInfo() throws IOException { | |||
StructureModel model = Ajde.getDefault().getStructureModelManager().getStructureModel(); | |||
StructureModel model = Ajde.getDefault().getStructureModelManager().getModel(); | |||
assertTrue("model exists", model != null); | |||
assertTrue("root exists", model.getRoot() != null); | |||
File testFile = openFile("figures-coverage/figures/Main.java"); | |||
@@ -137,7 +137,7 @@ public class StructureModelTest extends AjdeTestCase { | |||
* Integrity could be checked somewhere in the API. | |||
*/ | |||
public void testModelIntegrity() { | |||
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot(); | |||
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getModel().getRoot(); | |||
assertTrue("root exists", modelRoot != null); | |||
try { | |||
@@ -167,7 +167,7 @@ public class StructureModelTest extends AjdeTestCase { | |||
} | |||
} | |||
}; | |||
Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot().walk(walker); | |||
Ajde.getDefault().getStructureModelManager().getModel().getRoot().walk(walker); | |||
} | |||
protected void setUp() throws Exception { |
@@ -32,7 +32,7 @@ public class NullIdeFileStructureView extends FileStructureView { | |||
this.sourceFilePath = sourceFile; | |||
} | |||
public void setRootNode(StructureViewNode rootNode) { | |||
public void setRootNode(IStructureViewNode rootNode) { | |||
super.setRootNode(rootNode); | |||
notifyViewUpdated(); | |||
} |
@@ -25,11 +25,11 @@ public class NullIdeStructureViewRenderer implements StructureViewRenderer { | |||
hasBeenNotified = true; | |||
} | |||
public void setActiveNode(StructureViewNode node) { | |||
public void setActiveNode(IStructureViewNode node) { | |||
// ignored | |||
} | |||
public void setActiveNode(StructureViewNode node, int lineOffset) { | |||
public void setActiveNode(IStructureViewNode node, int lineOffset) { | |||
// ignored | |||
} | |||
@@ -50,7 +50,7 @@ public class StructureViewManagerTest extends AjdeTestCase { | |||
} | |||
public void testModelExists() { | |||
assertTrue(Ajde.getDefault().getStructureModelManager().getStructureModel() != null); | |||
assertTrue(Ajde.getDefault().getStructureModelManager().getModel() != null); | |||
} | |||
public void testNotificationAfterConfigFileChange() { | |||
@@ -85,7 +85,7 @@ public class StructureViewManagerTest extends AjdeTestCase { | |||
//System.err.println(">>>>>> " + currentView.getRootNode().getIProgramElement()); | |||
// AMC should this be currentView, or should we recreate the root... do the latter | |||
//IProgramElement n = currentView.getRootNode().getIProgramElement(); | |||
IProgramElement n = Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot(); | |||
IProgramElement n = Ajde.getDefault().getStructureModelManager().getModel().getRoot(); | |||
assertTrue( | |||
"no structure", | |||
//currentView.getRootNode().getIProgramElement().getChildren().get(0) | |||
@@ -95,7 +95,7 @@ public class StructureViewManagerTest extends AjdeTestCase { | |||
public void testModelIntegrity() { | |||
doSynchronousBuild(CONFIG_FILE_PATH); | |||
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getStructureModel().getRoot(); | |||
IProgramElement modelRoot = Ajde.getDefault().getStructureModelManager().getModel().getRoot(); | |||
assertTrue("root exists", modelRoot != null); | |||
try { |
@@ -24,7 +24,9 @@ public interface IRelationship extends Serializable { | |||
public String getName(); | |||
public String getReverseName(); | |||
public List getTargets(); | |||
public IProgramElement getSource(); | |||
public Kind getKind(); | |||
@@ -34,8 +36,6 @@ public interface IRelationship extends Serializable { | |||
public static class Kind implements Serializable { | |||
public static final Kind ADVICE = new Kind("advice"); | |||
// public static final Kind INHERITANCE = new Kind("inherits", "inherited by"); | |||
// public static final Kind REFERENCE = new Kind("reference"); | |||
public static final Kind DECLARE = new Kind("declare"); | |||
public static final Kind[] ALL = { ADVICE, DECLARE }; | |||
private final String name; |
@@ -23,9 +23,10 @@ public interface IRelationshipMapper extends Serializable { | |||
// | |||
// public void putRelationshipForElement(String source, IRelationship kind, String target); | |||
public List getRelationshipsForElement(IProgramElement source, IRelationship relationship); | |||
public void putRelationshipForElement(IProgramElement source, IRelationship relationship, List targets); | |||
public IRelationship get(IProgramElement source); | |||
public void putRelationshipForElement(IProgramElement source, IRelationship kind, IProgramElement target); | |||
// public void putRelationshipForElement(IProgramElement source, IRelationship relationship, List targets); | |||
public void put(IProgramElement source, IRelationship relationship); | |||
} |
@@ -94,7 +94,7 @@ public class StructureModel implements Serializable { | |||
* @param packageName if null default package is searched | |||
* @param className can't be null | |||
*/ | |||
public IProgramElement findNodeForClass(String packageName, String className) { | |||
public IProgramElement findNodeForType(String packageName, String typeName) { | |||
IProgramElement packageNode = null; | |||
if (packageName == null) { | |||
packageNode = root; | |||
@@ -111,7 +111,7 @@ public class StructureModel implements Serializable { | |||
// this searches each file for a class | |||
for (Iterator it = packageNode.getChildren().iterator(); it.hasNext(); ) { | |||
IProgramElement fileNode = (IProgramElement)it.next(); | |||
IProgramElement ret = findClassInNodes(fileNode.getChildren(), className); | |||
IProgramElement ret = findClassInNodes(fileNode.getChildren(), typeName); | |||
if (ret != null) return ret; | |||
} | |||
@@ -130,11 +130,8 @@ public class StructureModel implements Serializable { | |||
innerName = name.substring(dollar+1); | |||
} | |||
for (Iterator j = nodes.iterator(); j.hasNext(); ) { | |||
IProgramElement classNode = (IProgramElement)j.next(); | |||
// System.err.println("checking: " + classNode + " for " + baseName); | |||
// System.err.println("children: " + classNode.getChildren()); | |||
if (baseName.equals(classNode.getName())) { | |||
if (innerName == null) return classNode; | |||
else return findClassInNodes(classNode.getChildren(), innerName); |
@@ -33,15 +33,15 @@ public class StructureModelManager { | |||
private List structureListeners = new ArrayList(); | |||
private IRelationshipMapper mapper; | |||
private static final IRelationship ADVICE = new Relationship("advises", "advised by", IRelationship.Kind.ADVICE); | |||
// public static final IRelationship ADVICE = new Relationship("advises", "advised by", IRelationship.Kind.ADVICE); | |||
protected StructureModelManager() { | |||
List relationships = new ArrayList(); | |||
relationships.add(ADVICE); | |||
mapper = new RelationshipMapper(relationships); | |||
// relationships.add(ADVICE); | |||
mapper = new RelationshipMapper(); | |||
} | |||
public StructureModel getStructureModel() { | |||
public StructureModel getModel() { | |||
return model; | |||
} | |||
@@ -168,5 +168,9 @@ public class StructureModelManager { | |||
public static StructureModelManager getDefault() { | |||
return INSTANCE; | |||
} | |||
public IRelationshipMapper getMapper() { | |||
return mapper; | |||
} | |||
} | |||
@@ -24,28 +24,40 @@ import org.aspectj.asm.IRelationship.Kind; | |||
public class Relationship implements IRelationship { | |||
private String name; | |||
private String reverseName; | |||
private Kind kind; | |||
private IProgramElement source; | |||
private List targets; | |||
public Relationship(String name, String reverseName, Kind kind) { | |||
public Relationship( | |||
String name, | |||
Kind kind, | |||
IProgramElement source, | |||
List targets) { | |||
this.name = name; | |||
this.reverseName = reverseName; | |||
this.kind = kind; | |||
this.source = source; | |||
this.targets = targets; | |||
} | |||
public String getName() { | |||
return null; | |||
return name; | |||
} | |||
public Kind getKind() { | |||
return null; | |||
} | |||
public String getReverseName() { | |||
return reverseName; | |||
return kind; | |||
} | |||
public String toString() { | |||
return name + '/' + reverseName; | |||
return name; | |||
} | |||
public IProgramElement getSource() { | |||
return source; | |||
} | |||
public List getTargets() { | |||
return targets; | |||
} | |||
} |
@@ -16,44 +16,15 @@ import org.aspectj.asm.*; | |||
*/ | |||
public class RelationshipMapper extends HashMap implements IRelationshipMapper { | |||
private Map/*IRelationship*/ relationships = new HashMap(); | |||
public RelationshipMapper(List availableRelationships) { | |||
for (Iterator it = availableRelationships.iterator(); it.hasNext(); ) { | |||
IRelationship r = (IRelationship)it.next(); | |||
relationships.put(r, new HashMap()); | |||
} | |||
} | |||
public List getRelationshipsForElement(IProgramElement source, IRelationship relationship) { | |||
Map map = (Map)relationships.get(relationship); | |||
return (List)map.get(source); | |||
public IRelationship get(IProgramElement source) { | |||
return (IRelationship)super.get(source); | |||
} | |||
/** | |||
* Creates the relationship if not present. | |||
*/ | |||
public void putRelationshipForElement(IProgramElement source, IRelationship relationship, List targets) { | |||
Map map = (Map)relationships.get(relationship); | |||
if (map == null) { | |||
map = new HashMap(); | |||
relationships.put(relationship, map); | |||
} | |||
map.put(source, targets); | |||
} | |||
public void putRelationshipForElement(IProgramElement source, IRelationship relationship, IProgramElement target) { | |||
Map map = (Map)relationships.get(relationship); | |||
if (map == null) { | |||
map = new HashMap(); | |||
relationships.put(relationship, map); | |||
} | |||
List targetList = (List)map.get(source); | |||
if (targetList == null) { | |||
targetList = new ArrayList(); | |||
map.put(source, targetList); | |||
} | |||
targetList.add(target); | |||
public void put(IProgramElement source, IRelationship relationship) { | |||
super.put(source, relationship); | |||
} | |||
private static class RelationshipTable { | |||
@@ -73,28 +44,4 @@ public class RelationshipMapper extends HashMap implements IRelationshipMapper { | |||
return relationship; | |||
} | |||
} | |||
// public List getRelationshipsForElement( | |||
// IProgramElement source, | |||
// IRelationship relationship) { | |||
// | |||
// String signatureKey = (List)getRelationshipsForElement(source.getSignatureKey(), relationship); | |||
// | |||
// } | |||
// | |||
// public void putRelationshipForElement( | |||
// IProgramElement source, | |||
// IRelationship kind, | |||
// IProgramElement target) { | |||
// | |||
// } | |||
// | |||
// public void putRelationshipForElement( | |||
// IProgramElement source, | |||
// IRelationship relationship, | |||
// List targets) { | |||
// | |||
// } | |||
} |
@@ -118,7 +118,7 @@ public class AjBuildManager { | |||
if (batch) { | |||
// System.err.println("XXXX batch: " + buildConfig.getFiles()); | |||
if (buildConfig.isEmacsSymMode() || buildConfig.isGenerateModelMode()) { | |||
bcelWorld.setModel(StructureModelManager.getDefault().getStructureModel()); | |||
bcelWorld.setModel(StructureModelManager.getDefault().getModel()); | |||
// in incremental build, only get updated model? | |||
} | |||
performCompilation(buildConfig.getFiles()); | |||
@@ -167,7 +167,7 @@ public class AjBuildManager { | |||
private void setupModel() { | |||
String rootLabel = "<root>"; | |||
StructureModel model = StructureModelManager.getDefault().getStructureModel(); | |||
StructureModel model = StructureModelManager.getDefault().getModel(); | |||
IProgramElement.Kind kind = IProgramElement.Kind.FILE_JAVA; | |||
if (buildConfig.getConfigFile() != null) { | |||
rootLabel = buildConfig.getConfigFile().getName(); | |||
@@ -247,12 +247,14 @@ public class AjBuildManager { | |||
bcelWeaver.dumpUnwoven(buildConfig.getOutputJar()); | |||
} else { | |||
bcelWeaver.dumpUnwoven(); | |||
bcelWeaver.dumpResourcesToOutPath(); | |||
} | |||
} else { | |||
if (buildConfig.getOutputJar() != null) { | |||
bcelWeaver.weave(buildConfig.getOutputJar()); | |||
} else { | |||
bcelWeaver.weave(); | |||
bcelWeaver.dumpResourcesToOutPath(); | |||
} | |||
} | |||
if (progressListener != null) progressListener.setProgress(1.0); |
@@ -32,11 +32,11 @@ public class EmacsStructureModelManager { | |||
} | |||
public void externalizeModel() { | |||
if (!StructureModelManager.getDefault().getStructureModel().isValid()) return; | |||
if (!StructureModelManager.getDefault().getModel().isValid()) return; | |||
try { | |||
//Set fileSet = StructureModelManager.INSTANCE.getStructureModel().getFileMap().entrySet(); | |||
Set fileSet = StructureModelManager.getDefault().getStructureModel().getFileMapEntrySet(); | |||
Set fileSet = StructureModelManager.getDefault().getModel().getFileMapEntrySet(); | |||
for (Iterator it = fileSet.iterator(); it.hasNext(); ) { | |||
IProgramElement peNode = (IProgramElement)((Map.Entry)it.next()).getValue(); | |||
dumpStructureToFile(peNode); |
@@ -73,7 +73,7 @@ public class AjBuildManagerTest extends TestCase { | |||
}, messageWriter); | |||
String err = parser.getOtherMessages(true); | |||
assertTrue(err, null == err); | |||
manager.setStructureModel(StructureModelManager.getDefault().getStructureModel()); | |||
manager.setStructureModel(StructureModelManager.getDefault().getModel()); | |||
MessageHandler handler = new MessageHandler(); | |||
manager.batchBuild(buildConfig, handler); | |||
assertCompileMessagesValid(handler); |
@@ -146,17 +146,22 @@ public class CompileCommand implements ICommand { | |||
}; | |||
StructureViewNodeFactory structureViewNodeFactory = | |||
new StructureViewNodeFactory(iconRegistry) { | |||
protected StructureViewNode createConcreteNode( | |||
protected IStructureViewNode createDeclaration( | |||
IProgramElement node, | |||
AbstractIcon icon, | |||
List children) { | |||
return new SwingTreeViewNode(node, icon, children); | |||
} | |||
protected StructureViewNode createConcreteNode( | |||
protected IStructureViewNode createRelationship( | |||
IRelationship node, | |||
AbstractIcon icon) { | |||
return new SwingTreeViewNode(node, icon); | |||
} | |||
protected IStructureViewNode createLink( | |||
IProgramElement node, | |||
AbstractIcon icon) { | |||
return new SwingTreeViewNode(node, icon); | |||
} | |||
}; | |||
Ajde.init( |