r302 - in trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs: . ui
Author: tchemit Date: 2008-04-03 16:59:29 +0000 (Thu, 03 Apr 2008) New Revision: 302 Removed: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/VCSRepositoryState.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/AbstractTableModel.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccess.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccessManager.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldModelUtil.java trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FileStateTableModel.java Log: old ui code Deleted: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/VCSRepositoryState.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/VCSRepositoryState.java 2008-04-02 17:17:09 UTC (rev 301) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/VCSRepositoryState.java 2008-04-03 16:59:29 UTC (rev 302) @@ -1,200 +0,0 @@ -/* ##% -* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin, -* Benjamin Poussin, Tony Chemit -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*##%*/ -package org.codelutin.vcs; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.codelutin.vcs.ui.FileStateTableModel; - -import java.io.File; -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.List; - -/** - * Permet de rechercher et conserve les differences entre le repository local et - * distant. - * - * @author poussin - * @author chemit - */ -public class VCSRepositoryState { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static protected final Log log = LogFactory.getLog(VCSRepositoryState.class); - - /** liste des �tats des fichiers scann�s */ - protected List<VCSFileState> states = new ArrayList<VCSFileState>(); - - /** tableau des model de table (un par �tat VCSState) */ - protected FileStateTableModel[] models; - - /** le r�pertoire racine du working copy local */ - protected File root; - - /** vcs states to be authorized in this model */ - protected VCSState[] acceptedStates; - - /** vcs actions to be authorized in this model */ - protected EnumSet<VCSAction> acceptedActions; - - /** vcs handler to use (lazy instanciation) */ - protected VCSHandler handler; - - public static final VCSState[] UPDATE_STATES = { - org.codelutin.vcs.VCSState.OUT_OF_DATE, - org.codelutin.vcs.VCSState.MODIFIED, - org.codelutin.vcs.VCSState.OUT_OF_DATE_AND_MODIFIED, - org.codelutin.vcs.VCSState.UNVERSIONNED, - org.codelutin.vcs.VCSState.MISSING - }; - - /** - * @param handler handlet to use - * @param root directory of root local working copy - * @param actions accepted actions - * @param modules la liste des modules a traiter - * @throws VCSException if any problem while building - */ - protected VCSRepositoryState(VCSHandler handler, File root, EnumSet<VCSAction> actions, File... modules) throws VCSException { - this.acceptedActions = actions; - this.root = root; - this.acceptedStates = UPDATE_STATES; - this.handler = handler; - // scan all modules - for (File mod : modules) { - states.addAll(doScan(mod, acceptedStates)); - } - } - - public VCSHandler getHandler() { - return handler; - } - - /** - * @param handler vcs handler to use for synch operation - * @throws VCSException if any problem while synchro - */ - public void doSynch(VCSHandler handler) throws VCSException { - long timestamp = System.nanoTime(); - for (VCSFileState fileState : states) { - fileState.doSynch(handler, timestamp); - } - } - - public File getRoot() { - return root; - } - - public List<VCSFileState> getStates() { - return states; - } - - public VCSState[] getAcceptedStates() { - return acceptedStates; - } - - public FileStateTableModel getModel(VCSState state) { - return getModels()[state.ordinal()]; - } - - - protected FileStateTableModel[] getModels() { - if (models == null) { - models = new FileStateTableModel[VCSState.values().length]; - } - return models; - } - - public void createUIModels() { - for (VCSState state : acceptedStates) { - getModels()[state.ordinal()] = new FileStateTableModel(VCSFileStateManager.filter(states, state), acceptedActions); - } - } - - public List<VCSFileState> selected(VCSState... wanted) { - if (wanted.length == 0) { - wanted = acceptedStates; - } - List<VCSFileState> result = new ArrayList<VCSFileState>(); - for (VCSState state : wanted) { - FileStateTableModel tableModel = getModel(state); - if (tableModel != null) { - result.addAll(tableModel.getSelected()); - } - } - return result; - } - - public void checkAll(boolean toUse, VCSState... wanted) { - if (wanted.length == 0) wanted = acceptedStates; - for (VCSState state : wanted) { - FileStateTableModel tableModel = getModel(state); - if (tableModel != null) { - tableModel.checkAll(0, toUse); - } - } - } - - public boolean isModelEmpty() { - for (VCSState state : acceptedStates) { - FileStateTableModel tableModel = getModel(state); - if (tableModel != null && tableModel.getRowCount() > 0) { - return false; - } - } - return true; - } - - public int getModelSelectedSize() { - int result = 0; - for (VCSState state : acceptedStates) { - result += getModelSelectedSize(state); - } - return result; - } - - public boolean isModelEmpty(VCSState state) { - FileStateTableModel tableModel = getModel(state); - return !(tableModel != null && tableModel.getRowCount() > 0); - } - - public int getModelSize(VCSState state) { - FileStateTableModel tableModel = getModel(state); - return tableModel == null ? 0 : tableModel.getRowCount(); - } - - public int getModelSelectedSize(VCSState state) { - FileStateTableModel tableModel = getModel(state); - return tableModel == null ? 0 : tableModel.getSelectedSize(); - } - - private List<VCSFileState> doScan(File module, VCSState... acceptedStates) - throws VCSException { - // obtain list of all VCSFileState found in module directory - List<VCSFileState> states; - states = VCSFileStateManager.doScan(getHandler(), module, true, acceptedStates); - return states; - } - - public EnumSet<VCSAction> getAcceptedActions() { - return acceptedActions; - } -} Deleted: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/AbstractTableModel.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/AbstractTableModel.java 2008-04-02 17:17:09 UTC (rev 301) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/AbstractTableModel.java 2008-04-03 16:59:29 UTC (rev 302) @@ -1,190 +0,0 @@ -/* -* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin, -* Benjamin Poussin, Tony Chemit -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package org.codelutin.vcs.ui; - -import static org.codelutin.i18n.I18n._; - -import static java.lang.Boolean.TRUE; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** TODO-TC */ -@org.codelutin.i18n.I18nable -public abstract class AbstractTableModel<D> extends javax.swing.table.AbstractTableModel { - - - protected final FieldAccess<D>[] modelAccess; - protected List<D> data; - - protected final int nbOptions; - protected Map<D, Boolean>[] options; - protected final String[] optionNames; - protected final Class[] optionClass; - protected boolean[] optionChecks; - - private static final long serialVersionUID = 4697917831388337369L; - - @SuppressWarnings({"unchecked"}) - protected AbstractTableModel( - List<D> data, FieldAccess<D>[] modelAccess, - Class[] optionsClass, String[] optionsNames) throws RuntimeException { - if (optionsClass.length != optionsNames.length) - throw new RuntimeException(_("lutinvcs.error.fieldmodel.unmatchin.options")); - - this.data = data; - this.optionClass = optionsClass; - this.optionNames = optionsNames; - this.modelAccess = modelAccess; - this.nbOptions = optionsClass.length; - this.options = new Map[this.nbOptions]; - this.optionChecks = new boolean[this.nbOptions]; - } - - protected AbstractTableModel(List<D> data, FieldAccess<D>[] modelAccess, - Class optionsClass, String optionsNames) { - this(data, modelAccess, new Class[]{optionsClass}, - new String[]{optionsNames}); - } - - protected AbstractTableModel(List<D> data, FieldAccess<D>[] modelAccess) { - this(data, modelAccess, new Class[0], new String[0]); - } - - protected Map<D, Boolean> getOptionMap(int rowindex) { - if (rowindex >= nbOptions) return null; - Map<D, Boolean> map = options[rowindex]; - if (map == null) - map = options[rowindex] = new LinkedHashMap<D, Boolean>(); - return map; - } - - /** - * @param index option index - * @return Returns the selected for an option. - */ - public List<D> getSelected(int index) { - List<D> result = new ArrayList<D>(); - Map<D, Boolean> option = nbOptions == 0 ? null : options[index]; - if (index >= nbOptions || option == null) return result; - for (Map.Entry<D, Boolean> item : option.entrySet()) - if (java.lang.Boolean.TRUE.equals(item.getValue())) - result.add(item.getKey()); - return result; - } - - public int getSelectedSize(int index) { - int result = 0; - Map<D, Boolean> option = nbOptions == 0 ? null : options[index]; - if (index >= nbOptions || option == null) return result; - for (Map.Entry<D, Boolean> item : option.entrySet()) - if (java.lang.Boolean.TRUE.equals(item.getValue())) - result++; - return result; - } - - public List<D> getData() { - return data; - } - - public int getColumnCount() { - return modelAccess.length + nbOptions; - } - - public int getRowCount() { - return data.size(); - } - - public void checkAll() { - if (nbOptions != 1) return; - for (int i = 0; i < nbOptions; i++) checkAll(i); - } - - @Override - public Class<?> getColumnClass(int columnIndex) { - Class result; - if (columnIndex < nbOptions) { - - result = this.optionClass[columnIndex]; - } else { - result = FieldAccessManager.getFieldClass(modelAccess[columnIndex - nbOptions]); - } - return result; - } - - @Override - public String getColumnName(int columnIndex) { - String result; - if (columnIndex < nbOptions) - result = this.optionNames[columnIndex]; - else - result = FieldAccessManager.getFieldName(modelAccess[columnIndex - nbOptions]); - return result; - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return columnIndex < nbOptions; - } - - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - D item = data.get(rowIndex); - if (columnIndex < nbOptions) - setOptionValueAt(item, aValue, columnIndex); - // read only data - } - - public Object getValueAt(int rowIndex, int columnIndex) { - D item = data.get(rowIndex); - if (columnIndex < nbOptions) - return getOptionValueAt(item, columnIndex); - return modelAccess[columnIndex - nbOptions].getValue(item); - } - - protected void setOptionValueAt(D item, Object aValue, int index) { - getOptionMap(index).put(item, TRUE.equals(aValue)); - } - - protected void checkAll(int index, boolean value) { - if (index >= nbOptions || nbOptions > 1) return; - for (int i = 0; i < getRowCount(); i++) - setValueAt(value, i, index); - } - - protected void checkAll(int index) { - if (index >= nbOptions || nbOptions > 1) return; - checkAll(index, optionChecks[index] = !optionChecks[index]); - } - - protected Boolean getOptionValueAt(D item, int index) { - return getOptionMap(index).get(item); - } - - protected FieldAccess[] getFiedAccess() { - return modelAccess; - } - - public void reset(List<D> states) { - data.clear(); - data.addAll(states); - } -} \ No newline at end of file Deleted: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccess.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccess.java 2008-04-02 17:17:09 UTC (rev 301) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccess.java 2008-04-03 16:59:29 UTC (rev 302) @@ -1,31 +0,0 @@ -/* -* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin, -* Benjamin Poussin, Tony Chemit -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package org.codelutin.vcs.ui; - -/** - * A simple contract for a field access in vcs ui, says a cell - * - * @author chemit - */ -public interface FieldAccess<D> { - - Object getValue(D item); - -} Deleted: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccessManager.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccessManager.java 2008-04-02 17:17:09 UTC (rev 301) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldAccessManager.java 2008-04-03 16:59:29 UTC (rev 302) @@ -1,154 +0,0 @@ -/* -* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin, -* Benjamin Poussin, Tony Chemit -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package org.codelutin.vcs.ui; - -import org.apache.commons.logging.Log; -import static org.apache.commons.logging.LogFactory.getLog; -import static org.codelutin.i18n.I18n._; - -/** - * Class pour gérer un cache de {@link FieldAccessEntry} indexés à partir de - * {@link FieldAccess}. - * - * @author chemit - */ -@org.codelutin.i18n.I18nable -public class FieldAccessManager { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = getLog(FieldAccessManager.class); - - /** cache of registred FiledModelEntry associated to a FieldAccess */ - static protected java.util.Map<FieldAccess, FieldAccessEntry> cache; - - /** - * Register a FieldAccess in the cache - * - * @param constant the constant to be used - * @param libelle name of the field (libelle to display in row header) - * @param clazz class of the object used for this field - */ - public static <D> void registerFieldAccess(FieldAccess<D> constant, String libelle, Class clazz) { - checkAlreadyRegistredEntry(constant); - FieldAccessEntry<D> entry = new FieldAccessEntry<D>(constant, libelle, clazz); - log.debug(entry); - getCache().put(constant, entry); - } - - /** - * Obtain the class of a field via his constant type safe value - * - * @param constant the constant to be used - * @return the class defined for the field - */ - public static <D> Class getFieldClass(FieldAccess<D> constant) { - FieldAccessEntry entry = getEntry(constant, true); - return entry == null ? null : entry.getClazz(); - } - - /** - * Obtain the libelle of a field via his constant type safe value - * - * @param constant the constant to be used - * @return the libelle defined for the field - */ - public static <D> String getFieldName(FieldAccess<D> constant) { - FieldAccessEntry entry = getEntry(constant, true); - return entry == null ? null : entry.getLibelle(); - } - - /** - * Obtain for a item the value of his field via his constant type safe value - * - * @param constant the constant to be used - * @param item the item to be inspect - * @return the class defined for the field - */ - public static <D> Object getFieldValue(FieldAccess<D> constant, D item) { - FieldAccessEntry<D> entry = getEntry(constant, true); - return entry == null ? null : entry.getValue(item); - } - - @SuppressWarnings({"unchecked"}) - protected static <D> FieldAccessEntry<D> getEntry(FieldAccess<D> constant, boolean safe) { - FieldAccessEntry<D> entry = getCache().get(constant); - checkExistingEntry(constant, safe, entry); - return entry; - } - - private static <D> void checkExistingEntry(FieldAccess<D> constant, boolean safe, FieldAccessEntry<D> entry) { - if (safe && entry == null) { - throw new RuntimeException(_("lutinvcs.error.fieldmodel.not.registred", constant)); - } - } - - private static <D> void checkAlreadyRegistredEntry(FieldAccess<D> constant) throws RuntimeException { - FieldAccessEntry<D> entry = getEntry(constant, false); - if (entry != null) { - throw new RuntimeException(_("lutinvcs.error.fieldmodel.already.registred", constant)); - } - } - - - private static java.util.Map<FieldAccess, FieldAccessEntry> getCache() { - if (cache == null) - cache = new java.util.HashMap<FieldAccess, FieldAccessEntry>(); - return cache; - } - - protected static class FieldAccessEntry<D> implements FieldAccess<D> { - - private final String libelle; - private final Class clazz; - private final FieldAccess<D> constant; - - FieldAccessEntry(FieldAccess<D> constant, String libelle, Class clazz) { - this.constant = constant; - // keep only translated libelle - this.libelle = _(libelle); - this.clazz = clazz; - } - - public String getLibelle() { - return libelle; - } - - public Class getClazz() { - return clazz; - } - - public Object getValue(D item) { - return constant.getValue(item); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(this.getClass().getSimpleName()); - sb.append('@').append(Math.abs(hashCode())); - sb.append(" [").append(constant).append("] [").append(libelle).append("] ["); - sb.append(clazz).append(']'); - return sb.toString(); - } - } - - protected FieldAccessManager() { - } - -} \ No newline at end of file Deleted: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldModelUtil.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldModelUtil.java 2008-04-02 17:17:09 UTC (rev 301) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FieldModelUtil.java 2008-04-03 16:59:29 UTC (rev 302) @@ -1,121 +0,0 @@ -/* -* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin, -* Benjamin Poussin, Tony Chemit -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package org.codelutin.vcs.ui; - -import static org.codelutin.i18n.I18n._; -import org.codelutin.vcs.VCSFileState; - -import java.io.File; - -@org.codelutin.i18n.I18nable -public class FieldModelUtil { - - - static public ModuleFile<String> createModuleFileTableModel(java.util.List<String> data) { - return new ModuleFile<String>(SimpleModuleFileAccess.getAcces(), data); - } - - static public ModuleFile<String> createModuleFileTableModelWithSelect(java.util.List<String> data) { - return new ModuleFile<String>(SimpleModuleFileAccess.getAcces(), data, Boolean.class, _("lutinvcs.select")); - } - - static public <D> ModuleFile<D> createModuleFileTableModelWithSelect(FieldAccess<D>[] model, java.util.List<D> data) { - return new ModuleFile<D>(model, data, Boolean.class, _("lutinvcs.select")); - } - - static public <D> ModuleFile<D> createModuleFileTableModel(FieldAccess<D>[] model, java.util.List<D> data) { - return new ModuleFile<D>(model, data); - } - - public static class ModuleFile<D> extends AbstractTableModel<D> { - private static final long serialVersionUID = 4067521432762944991L; - - protected ModuleFile(FieldAccess<D>[] model, java.util.List<D> data, Class klazz, String select) { - super(data, model, klazz, select); - } - - protected ModuleFile(FieldAccess<D>[] model, java.util.List<D> data) { - super(data, model); - } - } - - - public static enum SimpleModuleFileWithActionAccess implements FieldAccess<VCSFileState> { - ACTION(_("lutinvcs.action"), String.class) { - public Object getValue(VCSFileState item) { - return item.getAction().getLibelle(); - } - }, - MODULE(_("lutinvcs.module"), String.class) { - public Object getValue(VCSFileState item) { - return item.getModuleName(); - } - }, - NAME(_("lutinvcs.file"), String.class) { - public Object getValue(VCSFileState item) { - return item.getModuleRelativeFileName(); - } - }; - - SimpleModuleFileWithActionAccess(String libelle, Class clazz) { - FieldAccessManager.registerFieldAccess(this, libelle, clazz); - } - } - - public static enum SimpleModuleFileAccess implements FieldAccess<String> { - - MODULE(_("lutinvcs.module"), String.class) { - public Object getValue(String item) { - return item.contains(java.io.File.separator) ? item.substring( - 0, item.lastIndexOf(java.io.File.separator)) : item; - } - }, - NAME(_("lutinvcs.file"), String.class) { - public Object getValue(String item) { - return item.contains(java.io.File.separator) ? item - .substring(item.lastIndexOf(java.io.File.separator) + 1) - : ""; - } - }; - - SimpleModuleFileAccess(String libelle, Class clazz) { - FieldAccessManager.registerFieldAccess(this, libelle, clazz); - } - - public static FieldAccess<String>[] getAcces() { - return values(); - } - - } - - public static enum SimpleFileAccess implements FieldAccess<File> { - - NAME(_("lutinvcs.file"), File.class) { - public Object getValue(File item) { - return item.getAbsolutePath(); - } - }; - - SimpleFileAccess(String libelle, Class clazz) { - FieldAccessManager.registerFieldAccess(this, libelle, clazz); - } - } - -} \ No newline at end of file Deleted: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FileStateTableModel.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FileStateTableModel.java 2008-04-02 17:17:09 UTC (rev 301) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/ui/FileStateTableModel.java 2008-04-03 16:59:29 UTC (rev 302) @@ -1,234 +0,0 @@ -/* -* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin, -* Benjamin Poussin, Tony Chemit -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package org.codelutin.vcs.ui; - -import static org.codelutin.i18n.I18n._; -import org.codelutin.vcs.VCSAction; -import org.codelutin.vcs.VCSFileState; -import org.codelutin.vcs.VCSState; - -import javax.swing.table.AbstractTableModel; -import static java.lang.Boolean.FALSE; -import static java.lang.Boolean.TRUE; -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * TODO Use FieldAccessManager - * - * @author tchemit - * @see org.codelutin.vcs.ui.FieldAccessManager - * @see org.codelutin.vcs.ui.FieldModelUtil - * @see org.codelutin.vcs.ui.FieldAccess - */ - -@org.codelutin.i18n.I18nable -public class FileStateTableModel extends AbstractTableModel { - - private static final long serialVersionUID = 5764217576707763232L; - - public static enum FIELD_ACCESS { - MODULE(_("lutinvcs.module"), String.class) { - public Object getValue(VCSFileState item) { - return item.getModuleName(); - } - }, - NAME(_("lutinvcs.file"), String.class) { - public Object getValue(VCSFileState item) { - return item.getModuleRelativeFileName(); - } - }, - LOGDIFF(_("lutinvcs.logDiff"), String.class) { - public Object getValue(VCSFileState item) { - final String changeLog = item.getChangeLog(); - return changeLog == null ? "" : changeLog; - } - }, - REV(_("lutinvcs.rev"), Long.class) { - public Object getValue(VCSFileState item) { - return item.getRev(); - } - }; - - protected String columnName; - protected Class columnClass; - - FIELD_ACCESS(String columnName, Class columnClass) { - this.columnName = columnName; - this.columnClass = columnClass; - } - - public String getColumnName() { - return columnName; - } - - public Class getColumnClass() { - return columnClass; - } - - public abstract Object getValue(VCSFileState item); - } - - protected Map<VCSFileState, VCSAction> selected; - protected List<VCSFileState> data; - protected VCSState state; - protected List<VCSAction> actions; - - public FileStateTableModel(List<VCSFileState> data, EnumSet<VCSAction> actions) { - this.data = data; - this.selected = new HashMap<VCSFileState, VCSAction>(); - List<VCSAction> tmp = new ArrayList<VCSAction>(); - - if (!data.isEmpty()) { - // determine vcsstates used here for the moment a unique type - state = data.get(0).getState(); - - for (VCSAction action : state.getActions()) { - if (action.isVisible() && actions.contains(action)) { - tmp.add(action); - } - } - } - this.actions = tmp; - } - - /** @return Returns the selected. */ - public List<VCSFileState> getSelected() { - List<VCSFileState> result = new ArrayList<VCSFileState>(); - for (Map.Entry<VCSFileState, VCSAction> item : selected.entrySet()) - if (item.getValue() != null) { - item.getKey().setAction(item.getValue()); - result.add(item.getKey()); - } - return result; - } - - public int getSelectedSize() { - int result = 0; - for (Map.Entry<VCSFileState, VCSAction> item : selected.entrySet()) { - if (item.getValue() != null) { - result++; - } - } - return result; - } - - public List<VCSAction> getActions() { - return actions; - } - - public VCSAction getAction(int row) { - return selected.get(data.get(row)); - } - - /* (non-Javadoc) - * @see javax.swing.table.TableModel#getColumnCount() - */ - public int getColumnCount() { - return _FIELD_ACCESS.length + actions.size() - 2; - } - - /* (non-Javadoc) - * @see javax.swing.table.TableModel#getRowCount() - */ - public int getRowCount() { - return data.size(); - } - - /* (non-Javadoc) - * @see javax.swing.table.AbstractTableModel#getColumnClass(int) - */ - @Override - public Class<?> getColumnClass(int columnIndex) { - Class result; - if (columnIndex < actions.size()) { - result = Boolean.class; - } else { - result = _FIELD_ACCESS[columnIndex - actions.size()].getColumnClass(); - } - return result; - } - - /* (non-Javadoc) - * @see javax.swing.table.AbstractTableModel#getColumnName(int) - */ - @Override - public String getColumnName(int columnIndex) { - String result; - if (columnIndex < actions.size()) { - result = actions.get(columnIndex).getLibelle().substring(0, 1); - } else { - result = _FIELD_ACCESS[columnIndex - actions.size()].getColumnName(); - } - return result; - } - - /* (non-Javadoc) - * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int) - */ - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return columnIndex < actions.size(); - } - - /* (non-Javadoc) - * @see javax.swing.table.AbstractTableModel#setValueAt(Object, int, int) - */ - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - if (columnIndex < actions.size()) { - VCSFileState item = data.get(rowIndex); - VCSAction action = actions.get(columnIndex); - final boolean b = TRUE.equals(aValue); - selected.put(item, b ? action : null); - } - } - - /* (non-Javadoc) - * @see javax.swing.table.TableModel#getValueAt(int, int) - */ - public Object getValueAt(int rowIndex, int columnIndex) { - VCSFileState item = data.get(rowIndex); - Object result; - if (getRowCount() == 0) return null; - if (columnIndex < actions.size()) { - result = selected.get(item); - VCSAction action = actions.get(columnIndex); - result = result == null || action != result ? FALSE : TRUE; - } else { - result = _FIELD_ACCESS[columnIndex - actions.size()].getValue(item); - } - - return result; - } - - - public void checkAll(int index, boolean value) { - if (actions.size() != 1 || index >= actions.size()) return; - //if (getActions().size() == 1) return; - // the only case we can automaticly check-uncheck items - for (int i = 0; i < getRowCount(); i++) setValueAt(value, i, index); - } - - private static final FIELD_ACCESS[] _FIELD_ACCESS = FIELD_ACCESS.values(); -} \ No newline at end of file
participants (1)
-
tchemit@users.labs.libre-entreprise.org