[Buix-commits] r295 - trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model
Author: tchemit Date: 2008-04-02 09:14:59 +0000 (Wed, 02 Apr 2008) New Revision: 295 Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/AbstractVCSFileStatesModel.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchUIModel.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchVCSFileStatesModel.java Log: models d'ui Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/AbstractVCSFileStatesModel.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/AbstractVCSFileStatesModel.java 2008-04-02 09:14:45 UTC (rev 294) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/AbstractVCSFileStatesModel.java 2008-04-02 09:14:59 UTC (rev 295) @@ -24,6 +24,7 @@ import org.codelutin.vcs.VCSFileState; import org.codelutin.vcs.VCSState; +import javax.swing.ListSelectionModel; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -36,14 +37,17 @@ */ public abstract class AbstractVCSFileStatesModel extends javax.swing.table.AbstractTableModel { + protected final String name; + protected List<VCSFileState> data; protected final String[] columnNames; private static final long serialVersionUID = 4697917831388337369L; - protected AbstractVCSFileStatesModel(String[] columnNames) { + protected AbstractVCSFileStatesModel(String name, String[] columnNames) { super(); + this.name = name; this.columnNames = columnNames; } @@ -51,6 +55,10 @@ return data; } + public String getName() { + return name; + } + public int getColumnCount() { return columnNames.length; } @@ -135,6 +143,22 @@ return list.toArray(new VCSFileState[list.size()]); } + public void select(VCSAction action, ListSelectionModel selectionModel) { + if (isEmpty()) { + return; + } + selectionModel.setValueIsAdjusting(true); + selectionModel.clearSelection(); + for (int i = 0; i < data.size(); i++) { + VCSFileState fileState = data.get(i); + List<VCSAction> actions = fileState.getState().getActions(); + if (actions.contains(action)) { + selectionModel.addSelectionInterval(i, i); + } + } + selectionModel.setValueIsAdjusting(false); + } + public VCSFileState[] getData(VCSState action) { if (isEmpty()) { return new VCSFileState[0]; @@ -179,4 +203,65 @@ return result.toArray(new VCSAction[result.size()]); } + public VCSFileState[] getData(ListSelectionModel selectionModel) { + if (isEmpty() || selectionModel.isSelectionEmpty()) { + return new VCSFileState[0]; + } + List<VCSFileState> list = new ArrayList<VCSFileState>(); + for (int i = 0, max = size(); i < max; i++) { + if (selectionModel.isSelectedIndex(i)) { + list.add(data.get(i)); + } + } + return list.toArray(new VCSFileState[list.size()]); + } + + public VCSAction[] getActions(ListSelectionModel selectionModel) { + if (isEmpty() || selectionModel.isSelectionEmpty()) { + return new VCSAction[0]; + } + List<VCSAction> result = new ArrayList<VCSAction>(); + for (VCSState vcsFileState : getStates(selectionModel)) { + List<VCSAction> action = vcsFileState.getActions(); + for (VCSAction vcsAction : action) { + if (vcsAction != null && !result.contains(vcsAction)) { + result.add(vcsAction); + } + } + } + return result.toArray(new VCSAction[result.size()]); + } + + public VCSState[] getStates(ListSelectionModel selectionModel) { + if (isEmpty() || selectionModel.isSelectionEmpty()) { + return new VCSState[0]; + } + List<VCSState> result = new ArrayList<VCSState>(); + for (int i = 0, max = size(); i < max; i++) { + if (selectionModel.isSelectedIndex(i)) { + VCSFileState vcsFileState = data.get(i); + VCSState state = vcsFileState.getState(); + if (state != null && !result.contains(state)) { + result.add(state); + } + } + } + return result.toArray(new VCSState[result.size()]); + } + + + @Override + public String toString() { + return super.toString() + "<name:" + name + ", size:" + (isEmpty() ? "0" : size()) + '>'; + } + + public void refresh(VCSState... states) { + //TODO launch refreshaction on given states + + } + + + public int size() { + return data.size(); + } } \ No newline at end of file Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchUIModel.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchUIModel.java 2008-04-02 09:14:45 UTC (rev 294) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchUIModel.java 2008-04-02 09:14:59 UTC (rev 295) @@ -16,9 +16,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelutin.vcs.VCSAction; import org.codelutin.vcs.VCSFileState; import org.codelutin.vcs.VCSHandler; -import org.codelutin.vcs.VCSAction; import static org.codelutin.vcs.ui.VCSUIConstants.ALL_MODEL_PROPERTY; import static org.codelutin.vcs.ui.VCSUIConstants.LOCAL_MODEL_PROPERTY; import static org.codelutin.vcs.ui.VCSUIConstants.REMOTE_MODEL_PROPERTY; @@ -29,9 +29,6 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.TreeMap; /** * Model of a repository @@ -72,13 +69,14 @@ protected VCSHandler handler; /** map of models */ - protected Map<String, SynchVCSFileStatesModel> models; + protected List<SynchVCSFileStatesModel> models; /** support for change properties support */ protected PropertyChangeSupport changeSupport; /** current tab displayed */ protected AbstractVCSFileStatesModel tabModel; + /** current action to fired */ protected VCSAction action; @@ -109,15 +107,6 @@ return getModel(tabModel); } - public String getTabModelName(AbstractVCSFileStatesModel model) { - for (Entry<String, SynchVCSFileStatesModel> entry : models.entrySet()) { - if (model.equals(entry.getValue())) { - return entry.getKey(); - } - } - return null; - } - public void setLocalRoot(File localRoot) { this.localRoot = localRoot; } @@ -127,9 +116,15 @@ } public SynchVCSFileStatesModel getModel(String modelName) { - SynchVCSFileStatesModel tableModel = getModels().get(modelName); + SynchVCSFileStatesModel tableModel = null; + for (SynchVCSFileStatesModel model : getModels()) { + if (modelName.equals(model.getName())) { + tableModel = model; + break; + } + } if (tableModel == null) { - getModels().put(modelName, tableModel = new SynchVCSFileStatesModel()); + getModels().add(tableModel = new SynchVCSFileStatesModel(modelName)); } return tableModel; } @@ -220,9 +215,9 @@ changeSupport.firePropertyChange(propertyName, oldValue, newValue); } - protected Map<String, SynchVCSFileStatesModel> getModels() { + protected List<SynchVCSFileStatesModel> getModels() { if (models == null) { - models = new TreeMap<String, SynchVCSFileStatesModel>(); + models = new ArrayList<SynchVCSFileStatesModel>(); } return models; } Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchVCSFileStatesModel.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchVCSFileStatesModel.java 2008-04-02 09:14:45 UTC (rev 294) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/model/SynchVCSFileStatesModel.java 2008-04-02 09:14:59 UTC (rev 295) @@ -16,14 +16,17 @@ import org.codelutin.vcs.VCSFileState; import org.codelutin.vcs.VCSState; +import org.codelutin.vcs.VCSAction; import org.codelutin.vcs.ui.VCSUIConstants; +import javax.swing.ListSelectionModel; + /** @author chemit */ public class SynchVCSFileStatesModel extends AbstractVCSFileStatesModel { private static final long serialVersionUID = -7592705623128585146L; - public SynchVCSFileStatesModel() { - super(VCSUIConstants.SIMPLE_COLUMNS_NAMES); + public SynchVCSFileStatesModel(String name) { + super(name, VCSUIConstants.SIMPLE_COLUMNS_NAMES); } public Object getValueAt(int rowIndex, int columnIndex) { @@ -43,4 +46,5 @@ } return result; } + }
participants (1)
-
tchemit@users.labs.libre-entreprise.org