~mathieu-jacomy/gephi/forceatlas2-multithread

« back to all changes in this revision

Viewing changes to PartitionImpl/src/org/gephi/partition/PartitionModelImpl.java

  • Committer: Mathieu Bastian
  • Date: 2009-11-04 11:08:58 UTC
  • Revision ID: mathieu.bastian@gmail.com-20091104110858-5x5kz9j7yx79xite
Refator and update Partition modules code. Create mvc architetcure for Partition and create TopComponent.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright 2008 WebAtlas
 
3
Authors : Mathieu Bastian, Mathieu Jacomy, Julian Bilcke
 
4
Website : http://www.gephi.org
 
5
 
 
6
This file is part of Gephi.
 
7
 
 
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.
 
12
 
 
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.
 
17
 
 
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/>.
 
20
 */
 
21
package org.gephi.partition;
 
22
 
 
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;
 
34
 
 
35
/**
 
36
 *
 
37
 * @author Mathieu Bastian
 
38
 */
 
39
public class PartitionModelImpl implements PartitionModel {
 
40
 
 
41
    //Architecture
 
42
    private List<ChangeListener> listeners;
 
43
 
 
44
    //Data
 
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;
 
51
 
 
52
    public PartitionModelImpl() {
 
53
        listeners = new ArrayList<ChangeListener>();
 
54
        transformersMap = new HashMap<Class, Transformer>();
 
55
    }
 
56
 
 
57
    public NodePartition[] getNodePartitions() {
 
58
        return new NodePartition[0];
 
59
    }
 
60
 
 
61
    public EdgePartition[] getEdgePartitions() {
 
62
        return new EdgePartition[0];
 
63
    }
 
64
 
 
65
    public TransformerBuilder getNodeTransformerBuilder() {
 
66
        return nodeBuilder;
 
67
    }
 
68
 
 
69
    public Transformer getNodeTransformer() {
 
70
        if (transformersMap.get(nodeBuilder.getClass()) != null) {
 
71
            return transformersMap.get(nodeBuilder.getClass());
 
72
        } else {
 
73
            Transformer t = nodeBuilder.getTransformer();
 
74
            transformersMap.put(nodeBuilder.getClass(), t);
 
75
            return t;
 
76
        }
 
77
    }
 
78
 
 
79
    public TransformerBuilder getEdgeTransformerBuilder() {
 
80
        return edgeBuilder;
 
81
    }
 
82
 
 
83
    public Transformer getEdgeTransformer() {
 
84
        if (transformersMap.get(edgeBuilder.getClass()) != null) {
 
85
            return transformersMap.get(edgeBuilder.getClass());
 
86
        } else {
 
87
            Transformer t = edgeBuilder.getTransformer();
 
88
            transformersMap.put(edgeBuilder.getClass(), t);
 
89
            return t;
 
90
        }
 
91
    }
 
92
 
 
93
    public Partition getSelectedPartition() {
 
94
        if (selectedPartitioning == PartitionModel.NODE_PARTITIONING) {
 
95
            return nodePartition;
 
96
        } else if (selectedPartitioning == PartitionModel.EDGE_PARTITIONING) {
 
97
            return edgePartition;
 
98
        }
 
99
        return null;
 
100
    }
 
101
 
 
102
    public int getSelectedPartitioning() {
 
103
        return selectedPartitioning;
 
104
    }
 
105
 
 
106
    public void addChangeListener(ChangeListener changeListener) {
 
107
        if (!listeners.contains(changeListener)) {
 
108
            listeners.add(changeListener);
 
109
        }
 
110
    }
 
111
 
 
112
    public void removeChangeListener(ChangeListener changeListener) {
 
113
        listeners.remove(changeListener);
 
114
    }
 
115
 
 
116
    private void fireChangeEvent() {
 
117
        ChangeEvent evt = new ChangeEvent(this);
 
118
        for (ChangeListener listener : listeners) {
 
119
            listener.stateChanged(evt);
 
120
        }
 
121
    }
 
122
 
 
123
    //Setters
 
124
    public void setNodeBuilder(TransformerBuilder nodeBuilder) {
 
125
        this.nodeBuilder = nodeBuilder;
 
126
        fireChangeEvent();
 
127
    }
 
128
 
 
129
    public void setEdgeBuilder(TransformerBuilder edgeBuilder) {
 
130
        this.edgeBuilder = edgeBuilder;
 
131
        fireChangeEvent();
 
132
    }
 
133
 
 
134
    public void setSelectedPartitioning(int selectedPartitioning) {
 
135
        this.selectedPartitioning = selectedPartitioning;
 
136
        fireChangeEvent();
 
137
    }
 
138
 
 
139
    public void setNodePartition(Partition nodePartition) {
 
140
        this.nodePartition = nodePartition;
 
141
        fireChangeEvent();
 
142
    }
 
143
 
 
144
    public void setEdgePartition(Partition edgePartition) {
 
145
        this.edgePartition = edgePartition;
 
146
        fireChangeEvent();
 
147
    }
 
148
}