[Buix-commits] r439 - in trunk/lutinvcs: lutinvcs-core/src/main/java/org/codelutin/vcs/util lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/model lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui
Author: tchemit Date: 2008-04-06 21:47:39 +0000 (Sun, 06 Apr 2008) New Revision: 439 Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractDiffUI.java trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractSynchUI.java trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractTabUI.java trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/VCSInitializer.java trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JDiffUI.jaxx trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JSynchUI.jaxx Log: begin of diff ui Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java 2008-04-06 21:47:39 UTC (rev 439) @@ -124,4 +124,7 @@ } } + public String toString() { + return super.toString() + " " + localFile + " : " + state; + } } Modified: trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractDiffUI.java =================================================================== --- trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractDiffUI.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractDiffUI.java 2008-04-06 21:47:39 UTC (rev 439) @@ -14,11 +14,14 @@ */ package org.codelutin.vcs.ui; +import org.codelutin.vcs.VCSEntry; import org.codelutin.vcs.type.VCSAction; +import org.codelutin.vcs.ui.handler.DiffUIHandler; import org.codelutin.vcs.ui.model.DiffUIModel; -import org.codelutin.vcs.ui.handler.DiffUIHandler; +import javax.swing.AbstractButton; import javax.swing.JButton; +import java.util.List; /** @author chemit */ public abstract class AbstractDiffUI extends AbstractTabUI { @@ -27,6 +30,16 @@ public abstract JButton getPreviousDiff(); + public abstract JButton getRefresh(); + + public abstract JButton getUpdate(); + + public abstract JButton getCommit(); + + public abstract JButton getRevert(); + + public abstract JButton getDelete(); + @Override public DiffUIModel getModel() { return (DiffUIModel) model; @@ -37,10 +50,29 @@ return (DiffUIHandler) handler; } - protected void selectFile() { - getModel().setFileModel(model.getEntriesModel().getDisplayedEntries(getHandler().getSelectionModel()).get(0)); + public void selectFile() { + List<VCSEntry> vcsEntryList = model.getEntriesModel().getDisplayedEntries(getHandler().getSelectionModel()); + if (!vcsEntryList.isEmpty()) { + getModel().setFileModel(vcsEntryList.get(0)); + } else { + getModel().setFileModel(null); + } } + @Override + public void setVisible(boolean b) { + if (b) { + AbstractButton button = getButton(handler.getLocation()); + if (button == null) { + button = getAllTab(); + } + button.doClick(); + if (getTable(getModel().getEntriesModel().getLocation()).getRowCount() > 0) + getHandler().getSelectionModel().setSelectionInterval(0, 0); + } + super.setVisible(b); + } + protected void doAction(VCSAction action) { getHandler().doAction(action, getModel().getFileModel()); } Modified: trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractSynchUI.java =================================================================== --- trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractSynchUI.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractSynchUI.java 2008-04-06 21:47:39 UTC (rev 439) @@ -16,10 +16,11 @@ import org.codelutin.vcs.type.VCSAction; import org.codelutin.vcs.type.VCSEntryLocation; +import org.codelutin.vcs.ui.handler.SynchUIHandler; import org.codelutin.vcs.ui.model.SynchUIModel; -import org.codelutin.vcs.ui.handler.SynchUIHandler; import javax.swing.JButton; +import javax.swing.AbstractButton; /** @author chemit */ public abstract class AbstractSynchUI extends AbstractTabUI { @@ -53,6 +54,18 @@ return (SynchUIHandler) handler; } + @Override + public void setVisible(boolean b) { + if (b) { + AbstractButton button = getButton(handler.getLocation()); + if (button == null) { + button = getAllTab(); + } + button.doClick(); + } + super.setVisible(b); + } + public AbstractVCSPopup getPopup(VCSEntryLocation modelName) { switch (modelName) { case ALL: @@ -67,6 +80,7 @@ throw new IllegalStateException("no popup found for " + modelName); } + protected void doAction(VCSAction action, boolean useSelection) { getHandler().doAction(action, useSelection); } Modified: trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractTabUI.java =================================================================== --- trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractTabUI.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/AbstractTabUI.java 2008-04-06 21:47:39 UTC (rev 439) @@ -22,11 +22,14 @@ import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JToggleButton; +import javax.swing.AbstractButton; import java.awt.CardLayout; /** @author chemit */ public abstract class AbstractTabUI extends AbstractUI { + public abstract jaxx.runtime.swing.JAXXButtonGroup getTabs(); + public abstract JToggleButton getAllTab(); public abstract JToggleButton getLocalTab(); @@ -65,14 +68,25 @@ return (AbstractTabUIHandler) handler; } - @Override + /*@Override public void setVisible(boolean b) { - if (handler.getLocation() == VCSEntryLocation.UNKNOW) { - // first launch, no tab model selected,choose one - getAllTab().doClick(); + if (b) { + switch (handler.getLocation()) { + + case LOCAL: + getLocalTab().doClick(); + break; + case REMOTE: + getRemoteTab().doClick(); + break; + case ALL: + case UNKNOW: + getAllTab().doClick(); + break; + } } super.setVisible(b); - } + }*/ public JTable getTable(VCSEntryLocation modelName) { switch (modelName) { @@ -88,6 +102,20 @@ throw new IllegalStateException("no table found for " + modelName); } + public AbstractButton getButton(VCSEntryLocation modelName) { + switch (modelName) { + case ALL: + return getAllTab(); + case LOCAL: + return getLocalTab(); + case REMOTE: + return getRemoteTab(); + case UNKNOW: + break; + } + throw new IllegalStateException("no popup found for " + modelName); + } + protected void setLocation(VCSEntryLocation location) { getModel().setLocation(location); } Modified: trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/VCSInitializer.java =================================================================== --- trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/VCSInitializer.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/VCSInitializer.java 2008-04-06 21:47:39 UTC (rev 439) @@ -33,6 +33,7 @@ TagManager.registerDefaultNamespace("AbstractConfirmUI", "org.codelutin.vcs.ui.*"); TagManager.registerDefaultNamespace("AbstractSynchUI", "org.codelutin.vcs.ui.*"); TagManager.registerDefaultNamespace("AbstractDiffUI", "org.codelutin.vcs.ui.*"); + TagManager.registerDefaultNamespace("DiffPanelUI", "org.codelutin.vcs.ui.*"); TagManager.registerDefaultNamespace("AbstractVCSPopup", "org.codelutin.vcs.ui.*"); TagManager.registerDefaultNamespace("JVCSPopup", "org.codelutin.vcs.ui.*"); Modified: trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java =================================================================== --- trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java 2008-04-06 21:47:39 UTC (rev 439) @@ -18,9 +18,15 @@ import org.codelutin.vcs.type.VCSAction; import org.codelutin.vcs.type.VCSEntryLocation; import org.codelutin.vcs.ui.AbstractDiffUI; +import org.codelutin.vcs.ui.model.AbstractVCSEntriesTableModel; import org.codelutin.vcs.ui.model.DiffUIModel; +import javax.swing.JTable; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import java.beans.PropertyChangeEvent; +import java.util.ArrayList; +import java.util.List; /** @author chemit */ public class DiffUIHandler extends org.codelutin.vcs.ui.handler.AbstractTabUIHandler<DiffUIModel, AbstractDiffUI> { @@ -50,20 +56,51 @@ @Override public void doSelectLocation(VCSEntryLocation location) { + super.doSelectLocation(location); + AbstractVCSEntriesTableModel fileStatesModel = getModel().getEntriesModel(); + if (fileStatesModel.getRowCount() > 0) { + getSelectionModel().addSelectionInterval(0, 0); + } else { + getSelectionModel().clearSelection(); + } } protected void initTab(VCSEntryLocation location) { - //TODO + JTable table = getUi().getTable(location); + final AbstractVCSEntriesTableModel fileStatesModel = getModel().getEntriesModel(); + table.setModel(fileStatesModel); + table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + public void valueChanged(ListSelectionEvent e) { + if (!e.getValueIsAdjusting()) { + getUi().selectFile(); + } + } + }); } public void doSelectFile(VCSEntry model) { - //TODO + + boolean hasActions = false; + List<String> acts = new ArrayList<String>(); + + if (model != null) { + List<VCSAction> actions = model.getState().getActions(); + for (VCSAction action : actions) { + acts.add(action.name().toLowerCase()); + } + hasActions = !actions.isEmpty(); + } + getUi().getUpdate().setEnabled(hasActions && acts.contains("update")); + getUi().getCommit().setEnabled(hasActions && acts.contains("commit")); + getUi().getRevert().setEnabled(hasActions && acts.contains("revert")); + getUi().getDelete().setEnabled(hasActions && acts.contains("delete")); + getUi().getRefresh().setEnabled(hasActions); } public void doAction(VCSAction action, VCSEntry model) { - //TODO + log.info(action + " : " + model); } public void gotoNextDiff() { Modified: trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java =================================================================== --- trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java 2008-04-06 21:47:39 UTC (rev 439) @@ -3,16 +3,17 @@ import org.codelutin.vcs.VCSEntry; import org.codelutin.vcs.type.VCSAction; import org.codelutin.vcs.type.VCSEntryLocation; +import org.codelutin.vcs.ui.AbstractConfirmUI; +import org.codelutin.vcs.ui.AbstractDiffUI; +import org.codelutin.vcs.ui.AbstractSynchUI; +import org.codelutin.vcs.ui.AbstractVCSPopup; +import org.codelutin.vcs.ui.VCSUIFactory; import org.codelutin.vcs.ui.model.AbstractVCSEntriesTableModel; import org.codelutin.vcs.ui.model.SynchUIModel; -import org.codelutin.vcs.ui.AbstractSynchUI; -import org.codelutin.vcs.ui.AbstractConfirmUI; -import org.codelutin.vcs.ui.VCSUIFactory; -import org.codelutin.vcs.ui.AbstractVCSPopup; +import javax.swing.AbstractAction; import javax.swing.JTable; import javax.swing.ListSelectionModel; -import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -66,6 +67,16 @@ } if (action == VCSAction.DIFF) { // show diff ui + AbstractDiffUI diffUI = VCSUIFactory.newDiffUI(); + List<VCSEntry> vcsEntryList; + if (useSelection) { + vcsEntryList = entries; + } else { + // take all entries + vcsEntryList = model.filter(action, model.getEntries()); + } + diffUI.getModel().init(model.getLocation(), vcsEntryList.toArray(new VCSEntry[vcsEntryList.size()])); + diffUI.setVisible(true); return; } log.info("files to treate :" + entries.size()); Modified: trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java =================================================================== --- trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java 2008-04-06 21:47:39 UTC (rev 439) @@ -15,6 +15,7 @@ package org.codelutin.vcs.ui.model; import org.codelutin.vcs.VCSEntry; +import org.codelutin.vcs.type.VCSEntryLocation; /** * Model of a repository @@ -37,4 +38,11 @@ public VCSEntry getFileModel() { return fileModel; } + + public void init(VCSEntryLocation location, VCSEntry[] states) { + getEntriesModel().clear(); + getEntriesModel().populate(VCSEntryLocation.ALL, states); + setFileModel(null); + setLocation(location); + } } \ No newline at end of file Modified: trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JDiffUI.jaxx =================================================================== --- trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JDiffUI.jaxx 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JDiffUI.jaxx 2008-04-06 21:47:39 UTC (rev 439) @@ -1,4 +1,5 @@ -<AbstractDiffUI title='lutinvcs.diff.title' id='diffui' defaultCloseOperation='DISPOSE_ON_CLOSE'> +<AbstractDiffUI title='lutinvcs.diff.title' modal="true" defaultCloseOperation='DISPOSE_ON_CLOSE' + height='600' width='500'> <style source="common.css"/> <java.awt.CardLayout id='cardLayout'/> @@ -6,7 +7,7 @@ <row fill='both'> <cell fill='both' weightx='1'> <JToolBar> - <JToggleButton id='allTab' selected='true' buttonGroup='tabs' mnemonic="A" + <JToggleButton id='allTab' selected='false' buttonGroup='tabs' mnemonic="A" toolTipText="lutinvcs.tabs.diff.tooltip.all" icon='{createImageIcon("remote_vs_local.png")}' onActionPerformed='setLocation(org.codelutin.vcs.type.VCSEntryLocation.ALL)'/> @@ -49,19 +50,33 @@ </cell> </row> <row fill='both'> - <cell fill='both' weighty='1' weightx='2'> + <cell fill='both'> <JPanel id='preview' layout='{cardLayout}'> - <JScrollPane id='allContent' styleClass='diffScroll' constraints='"taball"'> - <JTable id="allTable" styleClass='diffTable' onMouseClicked="selectFile()"/> + <JScrollPane id='allContent' styleClass='diffScroll' constraints='"taball"' height='100'> + <JTable id="allTable" styleClass='diffTable' onMouseClicked="selectFile()" selectionMode="0"/> </JScrollPane> - <JScrollPane id='localContent' styleClass='diffScroll' constraints='"tablocal"'> - <JTable id="localTable" styleClass='diffTable' onMouseClicked="selectFile()"/> + <JScrollPane id='localContent' styleClass='diffScroll' constraints='"tablocal"' height='100'> + <JTable id="localTable" styleClass='diffTable' onMouseClicked="selectFile()" selectionMode="0"/> </JScrollPane> - <JScrollPane id='remoteContent' styleClass='diffScroll' constraints='"tabremote"'> - <JTable id="remoteTable" styleClass='diffTable' onMouseClicked="selectFile()"/> + <JScrollPane id='remoteContent' styleClass='diffScroll' constraints='"tabremote"' height='100'> + <JTable id="remoteTable" styleClass='diffTable' onMouseClicked="selectFile()" + selectionMode="0"/> </JScrollPane> </JPanel> </cell> </row> + <row> + <cell fill='both' weighty='1' weightx='2'> + <!--JDiffPanelUI id="diffPanel"/--> + <JSplitPane id='splitPane2' orientation='horizontal' oneTouchExpandable='true'> + <JScrollPane id='remoteScroll' styleClass='updateScroll'> + <JTextArea id="remoteEditorContent"/> + </JScrollPane> + <JScrollPane id='localScroll' styleClass='updateScroll'> + <JTextArea id="localEditorContent"/> + </JScrollPane> + </JSplitPane> + </cell> + </row> </Table> </AbstractDiffUI> Modified: trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JSynchUI.jaxx =================================================================== --- trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JSynchUI.jaxx 2008-04-06 19:29:20 UTC (rev 438) +++ trunk/lutinvcs/lutinvcs-ui-jaxx/src/main/uimodel/org/codelutin/vcs/ui/JSynchUI.jaxx 2008-04-06 21:47:39 UTC (rev 439) @@ -1,4 +1,4 @@ -<AbstractSynchUI title='lutinvcs.synch.title' modal="true" defaultCloseOperation='DISPOSE_ON_CLOSE'> +<AbstractSynchUI title='lutinvcs.synch.title' defaultCloseOperation='DISPOSE_ON_CLOSE'> <style source="common.css"/> <java.awt.CardLayout id='cardLayout'/>
participants (1)
-
tchemit@users.labs.libre-entreprise.org