~yudi-xue/gephi/gephi-preview

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
    <head>
        <title>Gephi API Overview</title>
    </head>
    <body>
        <p>
            This documents provides Gephi APIs documentation and gives details about
            current status of each API. Each API is categorized by it's stability:
            stable, <span class="unstable">under development</span>, <span class="deprecated">deprecated</span> or
            <span class="friend">friend</span>.
        </p>
        <hr/>
        <h2>API Changes</h2>
        <ul>
			<li>(April 6 2011) Add <code>setCurrentQuery()</code> method on <code>FilterController</code>.</li>
            <li>(February 21 2011) Important change how modules save/load data into project files. The <code>WorkspacePersistenceProvider</code> interface
                from ProjectAPI now uses StAX instead of DOM. The <code>writeXML()</code> method now uses <code>XMLStreamWriter</code> and <code>readXML()</code>
                <code>XMLStreamReader</code>. Backward compatibility can't be assured, modules have to use switch to StAX.
            </li>
            <li>
                (February 11 2011) Added support of shortcut keys, availability of items and sub-items creation to Data Laboratory context menu actions
                (<code>NodesManipulator</code> and <code>EdgesManipulator</code>). Also now Visualization API has an SPI for adding context menu actions
                (<code>GraphContextMenuItem</code>) to nodes like DataLaboratory does with <code>NodesManipulator</code>. Note that they share the interface
                <code>ContextMenuItemManipulator</code> from Data Laboratory API, so they are compatible, being able to reuse actions on nodes for Overview and Data Laboratory.
            </li>
            <li>(December 19 2010) Add <code>removeMetaEdge(Edge)</code> to manually remove meta edges. Add <code>getTotalEdgeCount()</code> method
                to globally count the number of edges, regardless if the edge is proper or meta.
            </li>
            <li>(October 12 2010) Add methods in Graph API to better combine edges and meta edges features. Add <code>getEdgesAndMetaEdges(Node)</code> and
                <code>getTotalDegree(Node)</code> methods, as well as their in and out variants for <code>HierarchicalDirectedGraph</code>.
            </li>
            <li>(September 06 2010) Add a <code>flatten()</code> method to <code>HierarchicalGraph</code> to flatten the hierarchical graph and transform
                meta edges into regular edges.
            </li>
            <li>(September 05 2010) Add <code>destroy(Filter filter)</code> in <code>FilterBuilder</code> to receive notification when a filter
                query is removed and clean-up.
            </li>
            <li>(September 01 2010) Add <code>MetaEdgeBuilder</code> in Graph SPI to allow custom builders. Add <code>GraphSettings.setMetaEdgeBuilder()</code>
                in the graph model settings.
            </li>
            <li>(August 26 2010) Modify <code>StatisticsModel</code> to store reports directly instead of <code>Statistics</code> instance. As a
                consequence, the model has now a <code>getReport()</code> and a <code>getResult()</code> method that UI can use. The currently
                running statistics can now be get with a new <code>getRunning()</code> method.
            </li>
            <li>(August 19 2010) Simplify and improve attribute events management. Event listeners now subscribe directly from the
                <code>AttributeModel</code> instead of <code>AttributeTable</code> and will receive events for all tables. Refactoring of the
                <code>AttributeEvent</code> class with <code>AttributeTable</code> as source and a new <code>AttributeEventData</code> object as data.
                A new <code>SET_VALUE</code> has been implemented for getting events when attribute values are set.
            </li>
            <li>(August 18 2010) Changes in <code>AttributeRowFactory</code>, the <code>newNodeRow()</code> method now takes the owner object
                <code>NodeData</code> as a parameter. Similarly for <code>newEdgeRow()</code> and <code>newRowForTable()</code>.
            </li>
            <li>(August 17 2010) Add <code>getEdge(Node, Node)</code> in GraphAPI for consistency reasons.
            </li>
            <li>(August 15 2010) Changes in Processor SPI. The <code>Processor</code> has now setters instead of a <code>process()</code> method
                with parameters. How processors are created remains the same. Creation of a <code>ProcessorUI</code> interface for processors settings
                configuration. A <code>ProcessorUI</code> implementation provides a panel, which is shown when the import report is closing. The
                <code>ProcessorUI</code> also allows to disable a processor with some conditions.
            </li>
            <li>(August 13 2010) Add <code>getColor()</code> method in <code>NodeDraft</code> and <code>EdgeDraft</code>.
            </li>
            <li>(July 19 2010) Define the "Overview, "Data Laboratory" and "Preview" as perspectives. Create a new SPI for perspecives and
                perspective members. Members are simply the <code>TopComponent</code> that belong to a perspective. Plugins can implement
                <code>PerspectiveMember</code> to define the open and close behaviour.
            </li>
            <li>(July 16 2010) Add list/array types in Attributes API. All native types has now a related list type, except dynamic types. The list
                types inherits from <code>AbstractList</code>.
            </li>
            <li>(July 15 2010) Changes in the way Import API deals with time intervals and dynamic data. Support for dynamic attributes has been
                added with a new <code>addAttributeValue()</code> method in <code>NodeDraft</code> and <code>EdgeDraft</code>. For improving data
                cleanup possibilities, <code>NodeDraftGetter</code> and <code>EdgeDraftgetter</code> now returns an <code>AttributeRow</code>
                instead of a list of attribute values only. Finally to profit from latest improvements, draft elements returns directly a
                <code>TimeInterval</code> type instead of the list of slices. Methods with 'Slice' have been renamed to 'Interval' for
                consistency reasons.
            </li>
            <li>(July 14 2010) Add dynamic types into Attributes API. Dynamic types store values with a time interval and query can
                be customized with estimators. All dynamic types inherit from <code>DynamicType</code>
            </li>
            <li>(June 18 2010) Graph API event management improvements. The <code>GraphEvent</code> has now precise events, including
                <code>ADD_NODES</code>, <code>REMOVE_NODES</code>, <code>ADD_EDGES</code>, <code>REMOVE_EDGES</code> and
                <code>VISIBLE_VIEW</code>. A new <code>GraphEventData</code> interface has been created to retrieve elements related to
                the events.
            </li>
            <li>(June 14 2010) Export API refactoring, inspired from ImportAPI. Create an <code>ExporterBuilder</code> interface for
                exporter creation and different exporters: <code>GraphExporter</code>, <code>VectorExporter</code>, <code>ByteExporter</code>
                and <code>CharacterExporter</code> that covers common cases. The way exporters write data has been rationalized by using either
                <code>java.io.Writer</code> (text) or <code>java.io.OutputStream</code> (byte). The <code>ExportController</code> has been improved
                to support all use-cases, including file, writer and stream export.
            </li>
            <li>(June 11 2010) Add Spigot support to the ImportAPI and SPI. Like <code>DatabaseImporter</code>, the
                <code>SpigotImporter</code> interface is a new type of Importers. Modifications have also be made to the
                <code>ImportController</code> to support spigot import.
            </li>
            <li>(June 08 2010) Refactoring and improvements in the Import API and SPI. The refactoring aim is to solve the singleton
                issue with importers and let users implement builders interface that create importers instance. Therefore an
                <code>ImporterBuilder</code> interface has been created and should be registered with the <code>@ServiceProvider</code>
                annotation. The various importers types have been simplified and leave more choice to the implementations about how the
                input is managed. XML and Text file importers has been merged in a <code>FileImporter</code> interface, working with the
                <code>java.io.Reader</code>. Utility static methods, for instance <em>get Document from Reader</em> can now be found in a new
                <code>ImportUtils</code> class. The <code>ImportController</code> has been simplified for File import and now accepts
                <code>java.io.Reader</code> also. The main improvement on these modules in the support of UI components for importers.
                The aim is to let importers define an <code>ImporterUI</code> implementation to manage settings of these importers.
            </li>
            <li>(June 04 2010) Improvements in the GraphAPI identifiers management. The system is now storing String
                identifiers coming from users. New getters and setters methods have been created in <code>Graph</code>:
                <ul>
                    <li><code>Graph.setId(Node, String)</code></li>
                    <li><code>Graph.setId(Edge, String)</code></li>
                    <li><code>Graph.getNode(String)</code></li>
                    <li><code>Graph.getEdge(String)</code></li>
                </ul>
                The <code>NodeData.setId()</code> and <code>EdgeData.setId()</code> methods have been removed, compatibility can't be kept.
                Factory has also be changed to allow to create elements with String ID directly, as it's not possible anymore to
                do it from <code>NodeData</code>.
            </li>
            <li>(June 02 2010) Changes in AttributesAPI with event management. The lookup system in <code>AttributeTable</code>
                has been replaced by a more traditional event management system, with new <code>AttributeEvent</code> and
                <code>AttributeListener</code> interfaces. The dispatch implementation is also now on a separate thread.
            </li>
            <li>(May 08 2010) Changes in Import modules to separate core and user interfaces. The <code>ImportController</code> is now
                doing import task only and a new <code>ImportControllerUI</code> is displaying the user interface (Report Panel). The
                <code>ImportControllerUI</code> interface is located in the DesktopProject module and should be user to properly
                import file from Plugins. The <code>ImportController</code> methods could be used from the toolkit.
            </li>
            <li>(April 30 2010) Change FilterController.filter() to FilterController.filterVisible()  and FilterController.select()
                to FilterController.selectVisible(). The controller is managing this process in a separate thread, with progress,
                and takes care of properties change. A more simple direct way to filter is required for headless access.
                The FilterController.filter()  has been created and return the GraphView builded by the filter process.
            </li>
            <li>(April 24 2010) Expose basic visualization features in a newly created Visualization API. No proper visualization
                API exists but its creation is necessary to avoid implementation module dependencies.
            </li>
            <li>(April 17 2010) In PreviewAPI, the background color has been put in the PreviewModel. The PreviewController has
                been updated as well.
            </li>
            <li>(March 28 2010) Add a <code>doImport()</code> method in <code>ImportController</code> that accepts
                <code>InputStream</code>. In ImportAPI also, add <code>getWeight()</code> in EdgeDraft to let importers
                increment weight. New <code> AttributeUtils</code>  methods. Progress in GraphAPI and ImportAPI documentation.
            </li>
            <li>(Feb 17 2010) Change in ImportAPI to support bounded time intervals. Add methods that manage <code>TimeIntervalMin</code>
                and <code>TimeIntervalMax</code>. Changes in GraphAPI about elements counting. Henceforth only enabled elements are counted,
                in node	and edge counting, but also in degree methods. This counting is more logical, as it match with the 
                number of elements returned by <code>getNodes()</code> and <code>getEdges()</code>.
            </li>
            <li>(Feb 7 2010) Initial import, for 0.7alpha milestone. Half of
                APIs are fully documented and the rest needs to be soon. Expose
                only Core APIs, that plugins could need by now. Friend
                packages exists, in particular between Plugin and PluginUI
                modules but they are not shown here. Netbeans APIs documentation
                dependencies are missing, thus see
                <a href="http://bits.netbeans.org/dev/javadoc/index.html">Netbeans API Index</a>.
                Due to early development status, most of APIs are still marked as
                under development. Moreover APIs marked as stable are also suspected to
                change, but with much less impact than ones marked as under development.
            </li>
        </ul>
        <hr>
        <h2>API List</h2>
        <ul>
            <li><b>Attributes API</b> - Provides access to attributes values through an efficient column/row system.</li>
            <li><span class="unstable"><b>Clustering API</b></span> - API/SPI for clustering algorithms (experimental).</li>
            <li><b>DataLaboratory API</b> - API/SPI for data laboratory features (columns manipulation, edit, ...).</li>
            <li><b>Export API</b>  - Export API/SPI provides the infrastructure for exporting data to any support and define new exporters.</li>
            <li><b>Filters API</b>  - API/SPI for filters, define and control current filtering.</li>
            <li><b>Generator API</b> -  Generator API/SPI provides the way to create and execute graph generators.</li>
            <li><b>Graph API</b> - API for accessing the graph.</li>
            <li><span class="unstable"><b>Dynamic API</b></span>  - Provide features for dynamic graphs.</li>
            <li><b>Import API</b> - Import API/SPI provides the import workflow to import data form any support.</li>
            <li><b>Layout API</b> - Layout API/SPI provides real-time layout algorithms execution.</li>
            <li><b>LongTask API</b> - LongTask API provides utility features for long and asynchronous task execution.</li>
            <li><span class="unstable"><b>Partition API</b></span>  - API for manipulating partition within data.</li>
            <li><span class="unstable"><b>Preview API</b></span>  - API for building the graph preview structure.</li>
            <li><b>Project API</b> - Project API/SPI for project and worskpaces manipulation.</li>
            <li><span class="unstable"><b>Ranking API</b></span>  - API/SPI for ranking data values and create transformers.</li>
            <li><b>Statistics API</b> - Statistics and Metrics API/SPI provides asynchronous algorithms execution and UI infrastructure.</li>
            <li><b>Tools API</b> - Tool API/SPI defines interactive actions users can make with the visualization.</li>
            <li><b>Visualization API</b> - API/SPI for interacting with visualization and providing context menu actions.</li>
        </ul>
    </body>
</html>