EthanCerami - 10/11/2005 - Assuming we adopt {{{CyAttributes}}}, we have a bunch of unresolved issues re: access to those attributes that we haven't yet discussed. Here is a quick run-down: 1) I think we should keep {{{CyAttributes}}} as an interface, and then name the implementation {{{CyAttributesImpl}}}. 2) We need some factory methods that return {{{CyAttributes}}} for nodes and edges. Currently, you can obtain node/edge attributes via {{{Cytoscape.java}}} and {{{CyNetwork.java}}} (and possibly other ways too, that I am not familiar with.) I'd rather have just one way to get attributes, and preferably, separate it out from Cytoscape.java (mainly because Cytoscape.java is already so bloated). Perhaps we could have a factory class like this: {{{#!java pubic class GlobalAttributes { public static CyAttributes getNodeAttributes() {...} public static CyAttributes getEdgeAttributes() {...} } }}} 3) {{{Cytoscape.java}}} and {{{CyNetwork.java}}} have a bunch of "helper" methods that set/get attribute values. For example: {{{#!java public static String[] getNodeAttributesList () { public static String[] getNodeAttributesList ( Node[] nodes ) { public static String[] getEdgeAttributesList () { public static String[] getNodeAttributesList ( Edge[] edges ) { public static boolean setNodeAttributeValue ( Node node, String attribute, Object value ) public static boolean setEdgeAttributeValue ( Edge edge, String attribute, Object value ) }}} I think we need to deprecate all of these, and eventually remove them altogether. People should just use {{{CyAttributes}}} directly, and why complicate things by providing the same functionality via three different interfaces? 4) We have the following code in {{{Cytoscape.java}}} and in {{{CyNetwork.java}}}: In Cytoscape.java: {{{#!java public static CytoscapeData getNodeNetworkData () public static CytoscapeData getEdgeNetworkData () }}} In CyNetwork.java: {{{#!java public CytoscapeData getNodeAttributes(); public CytoscapeData getEdgeAttributes(); public CytoscapeData getNodeData (); public CytoscapeData getEdgeData (); }}} I think these need to be reverted back to return {{{GraphObjAttributes}}}. GaryBader - Oct.12.2005 - I favor all of these changes except the GlobalAttributes class. I think there should just be two methods on the Cytoscape class: {{{#!java public static CyAttributes getNodeAttributes() {...} public static CyAttributes getEdgeAttributes() {...} }}} that handle global attributes and that's it. The Cytoscape class can later be reduced, but getting global attributes is such a core action that I think it's fine for it to be there. I.e. we want to make the very common actions, like getting attributes, easy.