2
Copyright 2008 WebAtlas
3
Authors : Mathieu Bastian, Mathieu Jacomy, Julian Bilcke
4
Website : http://www.gephi.org
6
This file is part of Gephi.
8
Gephi is free software: you can redistribute it and/or modify
9
it under the terms of the GNU General Public License as published by
10
the Free Software Foundation, either version 3 of the License, or
11
(at your option) any later version.
13
Gephi is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
GNU General Public License for more details.
18
You should have received a copy of the GNU General Public License
19
along with Gephi. If not, see <http://www.gnu.org/licenses/>.
21
package org.gephi.partition;
23
import java.util.ArrayList;
24
import java.util.HashMap;
25
import java.util.List;
26
import javax.swing.event.ChangeEvent;
27
import javax.swing.event.ChangeListener;
28
import org.gephi.partition.api.EdgePartition;
29
import org.gephi.partition.api.NodePartition;
30
import org.gephi.partition.api.Partition;
31
import org.gephi.partition.api.PartitionModel;
32
import org.gephi.partition.api.Transformer;
33
import org.gephi.partition.api.TransformerBuilder;
37
* @author Mathieu Bastian
39
public class PartitionModelImpl implements PartitionModel {
42
private List<ChangeListener> listeners;
45
private int selectedPartitioning = -1;
46
private Partition nodePartition;
47
private Partition edgePartition;
48
private TransformerBuilder nodeBuilder;
49
private TransformerBuilder edgeBuilder;
50
private HashMap<Class, Transformer> transformersMap;
52
public PartitionModelImpl() {
53
listeners = new ArrayList<ChangeListener>();
54
transformersMap = new HashMap<Class, Transformer>();
57
public NodePartition[] getNodePartitions() {
58
return new NodePartition[0];
61
public EdgePartition[] getEdgePartitions() {
62
return new EdgePartition[0];
65
public TransformerBuilder getNodeTransformerBuilder() {
69
public Transformer getNodeTransformer() {
70
if (transformersMap.get(nodeBuilder.getClass()) != null) {
71
return transformersMap.get(nodeBuilder.getClass());
73
Transformer t = nodeBuilder.getTransformer();
74
transformersMap.put(nodeBuilder.getClass(), t);
79
public TransformerBuilder getEdgeTransformerBuilder() {
83
public Transformer getEdgeTransformer() {
84
if (transformersMap.get(edgeBuilder.getClass()) != null) {
85
return transformersMap.get(edgeBuilder.getClass());
87
Transformer t = edgeBuilder.getTransformer();
88
transformersMap.put(edgeBuilder.getClass(), t);
93
public Partition getSelectedPartition() {
94
if (selectedPartitioning == PartitionModel.NODE_PARTITIONING) {
96
} else if (selectedPartitioning == PartitionModel.EDGE_PARTITIONING) {
102
public int getSelectedPartitioning() {
103
return selectedPartitioning;
106
public void addChangeListener(ChangeListener changeListener) {
107
if (!listeners.contains(changeListener)) {
108
listeners.add(changeListener);
112
public void removeChangeListener(ChangeListener changeListener) {
113
listeners.remove(changeListener);
116
private void fireChangeEvent() {
117
ChangeEvent evt = new ChangeEvent(this);
118
for (ChangeListener listener : listeners) {
119
listener.stateChanged(evt);
124
public void setNodeBuilder(TransformerBuilder nodeBuilder) {
125
this.nodeBuilder = nodeBuilder;
129
public void setEdgeBuilder(TransformerBuilder edgeBuilder) {
130
this.edgeBuilder = edgeBuilder;
134
public void setSelectedPartitioning(int selectedPartitioning) {
135
this.selectedPartitioning = selectedPartitioning;
139
public void setNodePartition(Partition nodePartition) {
140
this.nodePartition = nodePartition;
144
public void setEdgePartition(Partition edgePartition) {
145
this.edgePartition = edgePartition;