Buix-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- 1440 discussions
r519 - trunk/lutinvcs/ui/common/src/main/resources/i18n
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 19:37:05 +0000 (Sun, 13 Apr 2008)
New Revision: 519
Modified:
trunk/lutinvcs/ui/common/src/main/resources/i18n/common-en_GB.properties
trunk/lutinvcs/ui/common/src/main/resources/i18n/common-fr_FR.properties
Log:
next - prev file actions + diff and changelog
Modified: trunk/lutinvcs/ui/common/src/main/resources/i18n/common-en_GB.properties
===================================================================
--- trunk/lutinvcs/ui/common/src/main/resources/i18n/common-en_GB.properties 2008-04-13 19:29:47 UTC (rev 518)
+++ trunk/lutinvcs/ui/common/src/main/resources/i18n/common-en_GB.properties 2008-04-13 19:37:05 UTC (rev 519)
@@ -10,7 +10,9 @@
lutinvcs.action.message=Action ''{0}'' ({1} selected files)
lutinvcs.action.message.one=Action ''{0}'' (1 selected file)
lutinvcs.action.nextdiff.tip=goto next diff
+lutinvcs.action.nextfile.tip=select newt file
lutinvcs.action.previousdiff.tip=goto previous diff
+lutinvcs.action.previousfile.tip=select previous file
lutinvcs.action.showmessages.tip=show previous commit messages
lutinvcs.action.single.tip=Launch action ''{0}'' on selected file ''{1}''
lutinvcs.file=File
Modified: trunk/lutinvcs/ui/common/src/main/resources/i18n/common-fr_FR.properties
===================================================================
--- trunk/lutinvcs/ui/common/src/main/resources/i18n/common-fr_FR.properties 2008-04-13 19:29:47 UTC (rev 518)
+++ trunk/lutinvcs/ui/common/src/main/resources/i18n/common-fr_FR.properties 2008-04-13 19:37:05 UTC (rev 519)
@@ -10,7 +10,9 @@
lutinvcs.action.message=Action ''{0}'' ({1} fichiers s\u00E9lectionn\u00E9s)
lutinvcs.action.message.one=Action ''{0}'' (1 fichier s\u00E9lectionn\u00E9)
lutinvcs.action.nextdiff.tip=voir la prochaine diff\u00E9rence
+lutinvcs.action.nextfile.tip=S\u00E9lectionner le prochain fichier
lutinvcs.action.previousdiff.tip=voir la diff\u00E9rence pr\u00E9c\u00E9dente
+lutinvcs.action.previousfile.tip=S\u00E9lectionner le pr\u00E9c\u00E9dent fichier
lutinvcs.action.showmessages.tip=voir les messages de publication pr\u00E9c\u00E9dents
lutinvcs.action.single.tip=ex\u00E9cuter l''action ''{0}'' sur le fichier s\u00E9l\u00E9ctionn\u00E9 ''{1}''
lutinvcs.file=Fichier
1
0
r518 - in trunk/lutinvcs: core/src/main/java/org/codelutin/vcs core/src/main/java/org/codelutin/vcs/util provider/mock/src/main/java/org/codelutin/vcs/provider/mock ui/common/src/main/java/org/codelutin/vcs/ui ui/common/src/main/java/org/codelutin/vcs/ui/action ui/common/src/main/java/org/codelutin/vcs/ui/handler ui/common/src/main/java/org/codelutin/vcs/ui/model ui/common/src/main/java/org/codelutin/vcs/ui/util ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 19:29:47 +0000 (Sun, 13 Apr 2008)
New Revision: 518
Added:
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/ChangeFileAction.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIHandler.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIModel.java
Modified:
trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSEntry.java
trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java
trunk/lutinvcs/provider/mock/src/main/java/org/codelutin/vcs/provider/mock/MockHandler.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java
trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/common.css
Log:
next - prev file actions + diff and changelog
Modified: trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSEntry.java
===================================================================
--- trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSEntry.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSEntry.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -59,7 +59,7 @@
*
* @throws VCSException if any pb with vcs io
* @throws IllegalStateException if entry was never populated
- * @throws java.io.IOException if io pb
+ * @throws IOException if io pb
*/
void populateDiff() throws IllegalStateException, VCSException, IOException;
@@ -137,16 +137,19 @@
String getRev() throws IllegalStateException;
/**
- * @return the changelog of entry from local aginst remote
+ * @return the changelog of entry from local against remote (compute it if necessary)
* @throws IllegalStateException if entry was never populated
+ * @throws VCSException if vcs io pb while computing changelog
*/
- BufferedReader getChangeLog() throws IllegalStateException;
+ BufferedReader getChangeLog() throws IllegalStateException, VCSException;
/**
- * @return the diff of entry from local aginst remote
+ * @return the diff of entry from local against remote (compute it if necessary)
* @throws IllegalStateException if entry was never populated
+ * @throws VCSException if vcs io pb while computing diff
+ * @throws IOException if io pb while computing diff
*/
- BufferedReader getDiff() throws IllegalStateException;
+ BufferedReader getDiff() throws IllegalStateException, IOException, VCSException;
/**
* @return the local entry content
Modified: trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java
===================================================================
--- trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/util/VCSEntryImpl.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -127,13 +127,19 @@
return rev;
}
- public BufferedReader getChangeLog() throws IllegalStateException {
+ public BufferedReader getChangeLog() throws IllegalStateException, VCSException {
checkPopulated();
+ if (changelog == null) {
+ populateChangeLog();
+ }
return new BufferedReader(new StringReader(changelog));
}
- public BufferedReader getDiff() throws IllegalStateException {
+ public BufferedReader getDiff() throws IllegalStateException, IOException, VCSException {
checkPopulated();
+ if (diff== null) {
+ populateDiff();
+ }
return new BufferedReader(new StringReader(diff));
}
Modified: trunk/lutinvcs/provider/mock/src/main/java/org/codelutin/vcs/provider/mock/MockHandler.java
===================================================================
--- trunk/lutinvcs/provider/mock/src/main/java/org/codelutin/vcs/provider/mock/MockHandler.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/provider/mock/src/main/java/org/codelutin/vcs/provider/mock/MockHandler.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -110,15 +110,15 @@
}
public String getChangeLog(File file) throws VCSException {
- return null;
+ return this+" changelog for : \n"+file+"... mock";
}
public String getDiff(File file) throws VCSException, IOException {
- return null;
+ return this+" diff for : \n"+file+"... mock";
}
public String getDiff(File file, Object againstRevision) throws VCSException, IOException {
- return null;
+ return this+" diff for : \n"+file+"... mock";
}
public boolean hasProtocoleChanged() throws VCSException {
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -14,23 +14,9 @@
*/
package org.codelutin.vcs.ui;
-import javax.swing.AbstractButton;
-
/** @author chemit */
-public abstract class ChangelogUI extends org.codelutin.vcs.ui.util.AbstractTabUI<org.codelutin.vcs.ui.handler.ChangelogUIHandler> {
+public abstract class ChangelogUI extends org.codelutin.vcs.ui.util.AbstractTabOneFileUI<org.codelutin.vcs.ui.handler.ChangelogUIHandler> {
- @Override
- public void setVisible(boolean b) {
- if (b) {
- AbstractButton button = getButton(getHandler().getLocation());
- if (button == null) {
- button = getAllTab();
- }
- button.doClick();
- if (getContentTable().getRowCount() > 0)
- getHandler().getSelectionModel().setSelectionInterval(0, 0);
- }
- super.setVisible(b);
- }
+ public abstract javax.swing.JTextArea getChangelogContent();
}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -16,9 +16,11 @@
import javax.swing.AbstractAction;
import javax.swing.AbstractButton;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
/** @author chemit */
-public abstract class DiffUI extends org.codelutin.vcs.ui.util.AbstractTabUI<org.codelutin.vcs.ui.handler.DiffUIHandler> {
+public abstract class DiffUI extends org.codelutin.vcs.ui.util.AbstractTabOneFileUI<org.codelutin.vcs.ui.handler.DiffUIHandler> {
public abstract AbstractButton getNextDiff();
@@ -26,20 +28,14 @@
public abstract AbstractButton getCommit();
- @Override
- public void setVisible(boolean b) {
- if (b) {
- AbstractButton button = getButton(getHandler().getLocation());
- if (button == null) {
- button = getAllTab();
- }
- button.doClick();
- if (getContentTable().getRowCount() > 0)
- getHandler().getSelectionModel().setSelectionInterval(0, 0);
- }
- super.setVisible(b);
- }
+ public abstract JScrollPane getRemoteEditorScroll();
+ public abstract JTextArea getRemoteEditorContent();
+
+ public abstract JScrollPane getLocalEditorScroll();
+
+ public abstract JTextArea getLocalEditorContent();
+
protected AbstractAction createDiffAction(boolean goUp) {
return org.codelutin.vcs.ui.action.DiffAction.createAction(goUp, this);
}
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -48,16 +48,4 @@
public abstract JPopupMenu getPopup();
- @Override
- public void setVisible(boolean b) {
- if (b) {
- AbstractButton button = getButton(getHandler().getLocation());
- if (button == null) {
- button = getAllTab();
- }
- button.doClick();
- }
- super.setVisible(b);
- }
-
}
\ No newline at end of file
Copied: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/ChangeFileAction.java (from rev 511, trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/ChangeLocationAction.java)
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/ChangeFileAction.java (rev 0)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/ChangeFileAction.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -0,0 +1,58 @@
+/**
+ * # #% Copyright (C) 2008 Code Lutin, 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.action;
+
+import org.codelutin.vcs.ui.util.AbstractTabOneFileUI;
+import org.codelutin.vcs.ui.util.AbstractTabOneFileUIHandler;
+import static org.codelutin.vcs.ui.util.UIHelper.createActionIcon;
+
+import javax.swing.AbstractAction;
+import java.awt.event.ActionEvent;
+
+/** @author chemit */
+public class ChangeFileAction extends org.codelutin.vcs.ui.util.AbstractUIAction<AbstractTabOneFileUIHandler<?, ?>> {
+
+ protected boolean goPrevious;
+
+ private static final long serialVersionUID = 1L;
+
+ public static AbstractAction createAction(boolean location, AbstractTabOneFileUI<?> ui) {
+ ChangeFileAction action = new ChangeFileAction(location);
+ action.setUi(ui);
+ return action;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ checkInit();
+ if (goPrevious) {
+ getHandler().gotoPreviousFile();
+ } else {
+ getHandler().gotoNextFile();
+ }
+ }
+
+ public boolean isGoPrevious() {
+ return goPrevious;
+ }
+
+ protected ChangeFileAction(boolean location) {
+ super(null, createActionIcon("file-" + (location ? "prev" : "next")));
+ this.goPrevious = location;
+ //putValue(SHORT_DESCRIPTION, location.getTip());
+ //putValue(DISPLAYED_MNEMONIC_INDEX_KEY, 0);
+ //putValue(MNEMONIC_KEY, (int) ((String) getValue(NAME)).charAt(0));
+ }
+
+}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -14,82 +14,43 @@
*/
package org.codelutin.vcs.ui.handler;
-import static org.codelutin.i18n.I18n._;
import org.codelutin.vcs.VCSEntry;
import org.codelutin.vcs.type.VCSAction;
import org.codelutin.vcs.ui.ChangelogUI;
import org.codelutin.vcs.ui.model.ChangelogUIModel;
-import org.codelutin.vcs.ui.model.DiffUIModel;
-import org.codelutin.vcs.ui.util.AbstractTabUIHandler;
+import org.codelutin.vcs.ui.util.AbstractTabOneFileUIHandler;
-import javax.swing.AbstractButton;
-import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
-import java.beans.PropertyChangeEvent;
import java.util.Collections;
import java.util.EnumMap;
/** @author chemit */
-public class ChangelogUIHandler extends AbstractTabUIHandler<ChangelogUIModel, ChangelogUI> {
+public class ChangelogUIHandler extends AbstractTabOneFileUIHandler<ChangelogUIModel, ChangelogUI> {
public ChangelogUIHandler(ChangelogUI ui) {
super(ui, new ChangelogUIModel());
ui.setHandler(this);
}
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (log.isDebugEnabled()) {
- log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
- }
- if (DiffUIModel.FILE_PROPERTY_CHANGED.equals(evt.getPropertyName())) {
- afterSelectionChanged();
- return;
- }
- super.propertyChange(evt);
- }
-
- @Override
- public void valueChanged(ListSelectionEvent e) {
- if (!e.getValueIsAdjusting()) {
- // update model selected file ? TODO Is this really necessary,
- ListSelectionModel selectionModel = (ListSelectionModel) e.getSource();
- VCSEntry vcsEntry = null;
- if (!selectionModel.isSelectionEmpty()) {
- vcsEntry = getModel().getEntriesModel().getDisplayedEntry(selectionModel.getMinSelectionIndex());
- }
- getModel().setFileModel(vcsEntry);
- }
- }
-
- public void afterLocationChanged() {
- if (getModel().getEntriesModel().getRowCount() > 0) {
- // select first row
- getSelectionModel().addSelectionInterval(0, 0);
- }
- }
-
protected void afterSelectionChanged() {
-
+ super.afterSelectionChanged();
VCSEntry vcsEntry = getModel().getFileModel();
EnumMap<VCSAction, Integer> actions = vcsEntry == null ? null : getModel().getEntriesModel().countActions(Collections.singletonList(vcsEntry));
boolean hasActions = actions != null && !actions.isEmpty();
ChangelogUI ui = getUi();
updateAction(actions, hasActions, ui.getUpdate(), VCSAction.UPDATE, vcsEntry);
- updateAction(actions, hasActions, ui.getRevert(), VCSAction.REVERT, vcsEntry);
+ updateAction(actions, hasActions, ui.getRevert(), VCSAction.REVERT, vcsEntry);
updateAction(actions, hasActions, ui.getRefresh(), VCSAction.REFRESH, vcsEntry);
- //TODO init changelog handler
- log.info("//TODO: show changleog for "+vcsEntry);
-
- }
-
- protected void updateAction(EnumMap<VCSAction, Integer> actions, boolean hasActions, AbstractButton ui, VCSAction action, VCSEntry vcsEntry) {
- super.updateAction(actions, hasActions, ui, action);
- boolean useAction = hasActions && actions.containsKey(action) && actions.get(action) > 0;
- String tip = null;
- if (useAction) {
- tip = _("lutinvcs.action.single.tip", action.getLibelle(), vcsEntry.getFile().getName());
+ if (vcsEntry == null) {
+ ui.getChangelogContent().setText("");
+ return;
}
- ui.setToolTipText(tip);
+ try {
+ ui.getChangelogContent().read(vcsEntry.getChangeLog(), "test");
+ } catch (Exception e) {
+ String message = "could not obtain changelog for file " + vcsEntry.getFile() + " for reason:\n" + e.getMessage();
+ log.warn(message);
+ ui.getChangelogContent().setText(message);
+ }
}
+
}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -15,21 +15,19 @@
package org.codelutin.vcs.ui.handler;
import static org.codelutin.i18n.I18n._;
+import org.codelutin.util.FileUtil;
import org.codelutin.vcs.VCSEntry;
import org.codelutin.vcs.type.VCSAction;
import org.codelutin.vcs.ui.DiffUI;
import org.codelutin.vcs.ui.model.DiffUIModel;
-import org.codelutin.vcs.ui.util.AbstractTabUIHandler;
+import org.codelutin.vcs.ui.util.AbstractTabOneFileUIHandler;
-import javax.swing.AbstractButton;
-import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
import java.beans.PropertyChangeEvent;
import java.util.Collections;
import java.util.EnumMap;
/** @author chemit */
-public class DiffUIHandler extends AbstractTabUIHandler<DiffUIModel, DiffUI> {
+public class DiffUIHandler extends AbstractTabOneFileUIHandler<DiffUIModel, DiffUI> {
public DiffUIHandler(DiffUI ui) {
super(ui, new DiffUIModel());
@@ -41,10 +39,6 @@
if (log.isDebugEnabled()) {
log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
}
- if (DiffUIModel.FILE_PROPERTY_CHANGED.equals(evt.getPropertyName())) {
- afterSelectionChanged();
- return;
- }
if (DiffUIModel.DIFF_PROPERTY_CHANGED.equals(evt.getPropertyName())) {
afterDiffAction();
return;
@@ -53,27 +47,8 @@
}
@Override
- public void valueChanged(ListSelectionEvent e) {
- if (!e.getValueIsAdjusting()) {
- // update model selected file ? TODO Is this really necessary,
- ListSelectionModel selectionModel = (ListSelectionModel) e.getSource();
- VCSEntry vcsEntry = null;
- if (!selectionModel.isSelectionEmpty()) {
- vcsEntry = getModel().getEntriesModel().getDisplayedEntry(selectionModel.getMinSelectionIndex());
- }
- getModel().setFileModel(vcsEntry);
- }
- }
-
- public void afterLocationChanged() {
- if (getModel().getEntriesModel().getRowCount() > 0) {
- // select first row
- getSelectionModel().addSelectionInterval(0, 0);
- }
- }
-
protected void afterSelectionChanged() {
-
+ super.afterSelectionChanged();
VCSEntry vcsEntry = getModel().getFileModel();
EnumMap<VCSAction, Integer> actions = vcsEntry == null ? null : getModel().getEntriesModel().countActions(Collections.singletonList(vcsEntry));
boolean hasActions = actions != null && !actions.isEmpty();
@@ -82,7 +57,21 @@
updateAction(actions, hasActions, ui.getRevert(), VCSAction.REVERT, vcsEntry);
updateAction(actions, hasActions, ui.getCommit(), VCSAction.COMMIT, vcsEntry);
updateAction(actions, hasActions, ui.getRefresh(), VCSAction.REFRESH, vcsEntry);
- //TODO init diff handler
+ if (vcsEntry == null) {
+ ui.getLocalEditorContent().setText("");
+ ui.getRemoteEditorContent().setText("");
+ return;
+ }
+ //TODO for the moment, just display local file content at right
+ //TODO abd diff at right
+ try {
+ ui.getRemoteEditorContent().read(vcsEntry.getDiff(), "diff-content " + vcsEntry.getFile());
+ ui.getLocalEditorContent().read(FileUtil.getReader(vcsEntry.getFile()), "local-content " + vcsEntry.getFile());
+ } catch (Exception e) {
+ String message = "could not obtain changelog for file " + vcsEntry.getFile() + " for reason:\n" + e.getMessage();
+ log.warn(message);
+ ui.getRemoteEditorContent().setText(message);
+ }
}
protected void afterDiffAction() {
@@ -107,14 +96,4 @@
getModel().setDiff(getModel().getDiff() - 1);
log.info("//TODO :" + this);
}
-
- protected void updateAction(EnumMap<VCSAction, Integer> actions, boolean hasActions, AbstractButton ui, VCSAction action, VCSEntry vcsEntry) {
- super.updateAction(actions, hasActions, ui, action);
- boolean useAction = hasActions && actions.containsKey(action) && actions.get(action) > 0;
- String tip = null;
- if (useAction) {
- tip = _("lutinvcs.action.single.tip", action.getLibelle(), vcsEntry.getFile().getName());
- }
- ui.setToolTipText(tip);
- }
}
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -16,30 +16,15 @@
import org.codelutin.vcs.VCSEntry;
import org.codelutin.vcs.type.VCSEntryLocation;
-import org.codelutin.vcs.ui.util.AbstractTabUIModel;
+import org.codelutin.vcs.ui.util.AbstractTabOneFileUIModel;
/**
* Model of a repository
*
* @author chemit
*/
-public class ChangelogUIModel extends AbstractTabUIModel {
+public class ChangelogUIModel extends AbstractTabOneFileUIModel {
- public static final String FILE_PROPERTY_CHANGED = "file";
-
- /** current file displayed */
- protected VCSEntry fileModel;
-
- public VCSEntry getFileModel() {
- return fileModel;
- }
-
- public void setFileModel(VCSEntry fileModel) {
- VCSEntry oldFileModel = this.fileModel;
- this.fileModel = fileModel;
- firePropertyChange(FILE_PROPERTY_CHANGED, oldFileModel, fileModel);
- }
-
public void init(VCSEntryLocation location, VCSEntry[] states) {
getEntriesModel().clear();
getEntriesModel().populate(VCSEntryLocation.ALL, states);
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -16,29 +16,21 @@
import org.codelutin.vcs.VCSEntry;
import org.codelutin.vcs.type.VCSEntryLocation;
-import org.codelutin.vcs.ui.util.AbstractTabUIModel;
+import org.codelutin.vcs.ui.util.AbstractTabOneFileUIModel;
/**
* Model of a repository
*
* @author chemit
*/
-public class DiffUIModel extends AbstractTabUIModel {
+public class DiffUIModel extends AbstractTabOneFileUIModel {
- public static final String FILE_PROPERTY_CHANGED = "file";
public static final String DIFF_PROPERTY_CHANGED = "diff";
- /** current file displayed */
- protected VCSEntry fileModel;
-
protected int nbDiffs;
protected Integer diff;
- public VCSEntry getFileModel() {
- return fileModel;
- }
-
public int getNbDiffs() {
return nbDiffs;
}
@@ -69,10 +61,9 @@
return diff != null && diff > 0;
}
- public void setFileModel(VCSEntry fileModel) {
- VCSEntry oldFileModel = this.fileModel;
- this.fileModel = fileModel;
- firePropertyChange(FILE_PROPERTY_CHANGED, oldFileModel, fileModel);
+ @Override
+ public void setFileModel(Integer fileModel) {
+ super.setFileModel(fileModel);
// TODO acquire diff and prepare DiffModel...
setNbDiffs(0);
}
Copied: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUI.java (from rev 514, trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java)
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUI.java (rev 0)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUI.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -0,0 +1,40 @@
+/**
+ * ##% Copyright (C) 2008 Code Lutin, 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.util;
+
+import org.codelutin.vcs.ui.action.ChangeFileAction;
+
+import javax.swing.AbstractAction;
+import javax.swing.AbstractButton;
+
+/** @author chemit */
+public abstract class AbstractTabOneFileUI<H extends AbstractTabOneFileUIHandler<?, ?>> extends AbstractTabUI<H> {
+
+ public abstract AbstractButton getNextFile();
+
+ public abstract AbstractButton getPreviousFile();
+
+ @Override
+ public void setVisible(boolean b) {
+ super.setVisible(b);
+ getContentTable().setAutoscrolls(true);
+ //TODO selected first file ?
+ }
+
+ protected AbstractAction createFileAction(boolean goPrevious) {
+ return ChangeFileAction.createAction(goPrevious, this);
+ }
+
+}
\ No newline at end of file
Copied: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIHandler.java (from rev 514, trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java)
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIHandler.java (rev 0)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIHandler.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -0,0 +1,110 @@
+/**
+ * ##% Copyright (C) 2008 Code Lutin, 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.util;
+
+import static org.codelutin.i18n.I18n._;
+import org.codelutin.vcs.VCSEntry;
+import org.codelutin.vcs.type.VCSAction;
+import org.codelutin.vcs.ui.model.DiffUIModel;
+
+import javax.swing.AbstractButton;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import java.beans.PropertyChangeEvent;
+import java.util.EnumMap;
+
+/** @author chemit */
+public abstract class AbstractTabOneFileUIHandler<M extends AbstractTabOneFileUIModel, U extends AbstractTabOneFileUI<? extends AbstractTabUIHandler>> extends AbstractTabUIHandler<M, U> {
+
+ protected AbstractTabOneFileUIHandler(U ui, M model) {
+ super(ui, model);
+ }
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
+ if (DiffUIModel.FILE_PROPERTY_CHANGED.equals(evt.getPropertyName())) {
+ afterSelectionChanged();
+ return;
+ }
+ super.propertyChange(evt);
+ }
+
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ if (!e.getValueIsAdjusting()) {
+
+ ListSelectionModel selectionModel = (ListSelectionModel) e.getSource();
+
+ Integer selectionIndex = selectionModel.isSelectionEmpty() ? null : selectionModel.getMinSelectionIndex();
+
+ getModel().setFileModel(selectionIndex);
+ }
+ //super.valueChanged(e);
+ }
+
+ protected void afterSelectionChanged() {
+
+ U ui = getUi();
+ boolean hasNext = getModel().hasNextFile();
+ boolean hasPrevious = getModel().hasPreviousFile();
+ log.info("//TODO :" + this + " next:" + hasNext + ", prev:" + hasPrevious);
+ ui.getNextFile().setEnabled(hasNext);
+ ui.getPreviousFile().setEnabled(hasPrevious);
+ ui.getNextFile().setToolTipText(hasNext ? _("lutinvcs.action.nextfile.tip") : null);
+ ui.getPreviousFile().setToolTipText(hasPrevious ? _("lutinvcs.action.previousfile.tip") : null);
+ // always scroll to selected
+ Integer selectedRow = getModel().getFileIndex();
+ if (selectedRow != null) {
+ ui.getContentTable().scrollRectToVisible(ui.getContentTable().getCellRect(selectedRow, 0, true));
+ }
+ }
+
+ public void afterLocationChanged() {
+ if (getModel().getEntriesModel().getRowCount() > 0) {
+ // select first row
+ getSelectionModel().setSelectionInterval(0, 0);
+ } else {
+ // disable all actions
+ afterSelectionChanged();
+ }
+ }
+
+ public void gotoPreviousFile() {
+ Integer index = getModel().getFileIndex();
+ if (index != null && getModel().hasPreviousFile) {
+ getSelectionModel().setSelectionInterval(index - 1, index - 1);
+ }
+ }
+
+ public void gotoNextFile() {
+ Integer index = getModel().getFileIndex();
+ if (index != null && getModel().hasNextFile) {
+ getSelectionModel().setSelectionInterval(index + 1, index + 1);
+ }
+ }
+
+ protected void updateAction(EnumMap<VCSAction, Integer> actions, boolean hasActions, AbstractButton ui, VCSAction action, VCSEntry vcsEntry) {
+ super.updateAction(actions, hasActions, ui, action);
+ boolean useAction = hasActions && actions.containsKey(action) && actions.get(action) > 0;
+ String tip = null;
+ if (useAction) {
+ tip = _("lutinvcs.action.single.tip", action.getLibelle(), vcsEntry.getFile().getName());
+ }
+ ui.setToolTipText(tip);
+ }
+}
\ No newline at end of file
Copied: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIModel.java (from rev 511, trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIModel.java)
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIModel.java (rev 0)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabOneFileUIModel.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -0,0 +1,76 @@
+/**
+ * ##% Copyright (C) 2008 Code Lutin, 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.util;
+
+import org.codelutin.vcs.VCSEntry;
+
+/**
+ * Abstract for a dialog with location information (says one tab by location type (except UNKNOW type of course...)
+ *
+ * @author chemit
+ */
+public class AbstractTabOneFileUIModel extends AbstractTabUIModel {
+
+ public static final String FILE_PROPERTY_CHANGED = "file";
+
+ /** current file displayed */
+ protected VCSEntry fileModel;
+
+ protected boolean hasNextFile;
+ protected boolean hasPreviousFile;
+
+ protected Integer fileIndex;
+
+ public VCSEntry getFileModel() {
+ if (fileIndex == null) {
+ return null;
+ }
+ return getEntriesModel().getDisplayedEntry(fileIndex);
+ }
+
+ public void setFileModel(Integer fileIndex) {
+ VCSEntry oldFileModel = this.fileModel;
+ this.fileIndex = fileIndex;
+
+ int size = getEntriesModel().getRowCount();
+ if (fileIndex == null || size < 2) {
+ hasNextFile = hasPreviousFile = false;
+ } else {
+ hasNextFile = hasPreviousFile = true;
+ if (fileIndex == 0) {
+ // first row : no previous file
+ hasPreviousFile = false;
+ } else {
+ if (fileIndex == size - 1) {
+ // last row : no next file
+ hasNextFile = false;
+ }
+ }
+ }
+ firePropertyChange(FILE_PROPERTY_CHANGED, oldFileModel, fileIndex);
+ }
+
+ public boolean hasPreviousFile() {
+ return hasPreviousFile;
+ }
+
+ public boolean hasNextFile() {
+ return hasNextFile;
+ }
+
+ public Integer getFileIndex() {
+ return fileIndex;
+ }
+}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -36,9 +36,23 @@
public abstract AbstractButton getUpdate();
-
public abstract AbstractButton getRevert();
+ @Override
+ public void setVisible(boolean b) {
+ if (b) {
+
+ VCSEntryLocation vcsEntryLocation = getHandler().getLocation();
+ AbstractButton button = getButton(vcsEntryLocation);
+ if (button == null) {
+ button = getAllTab();
+ }
+ getHandler().getModel().setLocation(VCSEntryLocation.UNKNOW);
+ button.doClick();
+ }
+ super.setVisible(b);
+ }
+
public AbstractButton getButton(VCSEntryLocation modelName) {
switch (modelName) {
case ALL:
@@ -50,7 +64,7 @@
case UNKNOW:
return null;
}
- throw new IllegalStateException("no popup found for " + modelName);
+ throw new IllegalStateException("no button found for " + modelName);
}
protected AbstractAction createLocationAction(VCSEntryLocation location) {
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java 2008-04-13 19:29:47 UTC (rev 518)
@@ -16,6 +16,7 @@
import org.codelutin.vcs.VCSEntry;
import org.codelutin.vcs.type.VCSAction;
+import org.codelutin.vcs.type.VCSEntryLocation;
import org.codelutin.vcs.ui.ConfirmUI;
import org.codelutin.vcs.ui.DiffUI;
import org.codelutin.vcs.ui.VCSUIFactory;
@@ -66,6 +67,7 @@
entries = model.filter(VCSAction.DIFF, model.getEntries());
}
log.info("nb entries:" + entries.size());
+ ui.getButton(model.getLocation()).setSelected(false);
ui.getHandler().getModel().init(model.getLocation(), entries.toArray(new VCSEntry[entries.size()]));
ui.getContentScroll().setEnabled(entries.size() > 1);
ui.setVisible(true);
@@ -78,7 +80,7 @@
entries = model.filter(VCSAction.CHANGELOG, model.getEntries());
}
log.info("nb entries:" + entries.size());
- ui.getHandler().getModel().init(model.getLocation(), entries.toArray(new VCSEntry[entries.size()]));
+ ui.getHandler().getModel().init(VCSEntryLocation.REMOTE, entries.toArray(new VCSEntry[entries.size()]));
ui.getContentScroll().setEnabled(entries.size() > 1);
ui.setVisible(true);
}
@@ -90,6 +92,5 @@
// do refresh of all states
model.refresh(System.nanoTime(), entries);
}
-
-
+
}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/common.css
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/common.css 2008-04-13 19:14:00 UTC (rev 517)
+++ trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/common.css 2008-04-13 19:29:47 UTC (rev 518)
@@ -46,7 +46,9 @@
rowSelectionAllowed: true;
rowMargin: 0;
}
-
+#localEditorScroll,#remoteEditorScroll{
+ font-size:10;
+}
.updateTable, .confirmTable {
selectionMode: 2;
}
1
0
r517 - in trunk/lutinvcs/ui/jaxx/src/main: resources/icons uimodel/org/codelutin/vcs/ui
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 19:14:00 +0000 (Sun, 13 Apr 2008)
New Revision: 517
Added:
trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-file-next.png
trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-file-prev.png
Modified:
trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx
trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxDiffUI.jaxx
Log:
next - prev file actions
Added: trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-file-next.png
===================================================================
(Binary files differ)
Property changes on: trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-file-next.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-file-prev.png
===================================================================
(Binary files differ)
Property changes on: trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-file-prev.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx 2008-04-13 19:13:34 UTC (rev 516)
+++ trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx 2008-04-13 19:14:00 UTC (rev 517)
@@ -1,4 +1,4 @@
-<ChangelogUI title='lutinvcs.changelog.title' modal="true" defaultCloseOperation='DISPOSE_ON_CLOSE' height='600' width='500'>
+<ChangelogUI title='lutinvcs.changelog.title' modal="true" defaultCloseOperation='DISPOSE_ON_CLOSE' height='400' width='500'>
<style source="common.css"/>
<script>
import static org.codelutin.vcs.type.VCSAction.*;
@@ -12,10 +12,11 @@
<JToggleButton id='localTab' action='{createLocationAction(LOCAL)}'/>
<JToggleButton id='remoteTab' action='{createLocationAction(REMOTE)}'/>
<JSeparator orientation="vertical"/>
+ <JButton id='previousFile' action='{createFileAction(true)}'/>
+ <JButton id='nextFile' action='{createFileAction(false)}'/>
<JButton id='refresh' action='{createAction(REFRESH,true)}'/>
<JSeparator orientation="vertical"/>
<JButton id='update' action='{createAction(UPDATE,true)}'/>
- <!--JButton id='commit' action='{createAction(COMMIT,true)}'/-->
<JButton id='revert' action='{createAction(REVERT,true)}'/>
<JSeparator orientation="vertical"/>
<JButton id='help' action='{createHelpAction()}'/>
Modified: trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxDiffUI.jaxx
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxDiffUI.jaxx 2008-04-13 19:13:34 UTC (rev 516)
+++ trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxDiffUI.jaxx 2008-04-13 19:14:00 UTC (rev 517)
@@ -12,8 +12,10 @@
<JToggleButton id='localTab' action='{createLocationAction(LOCAL)}'/>
<JToggleButton id='remoteTab' action='{createLocationAction(REMOTE)}'/>
<JSeparator orientation="vertical"/>
+ <JButton id='previousFile' action='{createFileAction(true)}'/>
+ <JButton id='nextFile' action='{createFileAction(false)}'/>
<JButton id='refresh' action='{createAction(REFRESH,true)}'/>
- <JSeparator orientation="vertical"/>
+ <JSeparator orientation="vertical"/>
<JButton id='nextDiff' action='{createDiffAction(false)}'/>
<JButton id='previousDiff' action='{createDiffAction(true)}'/>
<JSeparator orientation="vertical"/>
1
0
r516 - trunk/lutinvcs/ui/jaxx/src/main/resources
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 19:13:34 +0000 (Sun, 13 Apr 2008)
New Revision: 516
Removed:
trunk/lutinvcs/ui/jaxx/src/main/resources/vcs-jaxx.rules
Log:
no more i18n-ParserJaxx use
Deleted: trunk/lutinvcs/ui/jaxx/src/main/resources/vcs-jaxx.rules
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/resources/vcs-jaxx.rules 2008-04-13 17:13:21 UTC (rev 515)
+++ trunk/lutinvcs/ui/jaxx/src/main/resources/vcs-jaxx.rules 2008-04-13 19:13:34 UTC (rev 516)
@@ -1,3 +0,0 @@
-//SynchUI/@title
-//DiffUI/@title
-//ConfirmUI/@title
\ No newline at end of file
1
0
r515 - in trunk/lutinvcs/ui/jaxx/src/main: resources/i18n resources/icons uimodel/org/codelutin/vcs/ui
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 17:13:21 +0000 (Sun, 13 Apr 2008)
New Revision: 515
Added:
trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-changelog.png
trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx
Modified:
trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-en_GB.properties
trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-fr_FR.properties
trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxSynchUI.jaxx
trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxVCSUIProvider.java
Log:
add changelog ui
Modified: trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-en_GB.properties
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-en_GB.properties 2008-04-13 17:12:54 UTC (rev 514)
+++ trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-en_GB.properties 2008-04-13 17:13:21 UTC (rev 515)
@@ -1,3 +1,4 @@
+lutinvcs.changelog.title=Changelog UI
lutinvcs.commit.message=Please fill a message for your commit
lutinvcs.confirm.title=Confirm UI
lutinvcs.diff.title=Diff UI
Modified: trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-fr_FR.properties
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-fr_FR.properties 2008-04-13 17:12:54 UTC (rev 514)
+++ trunk/lutinvcs/ui/jaxx/src/main/resources/i18n/jaxx-fr_FR.properties 2008-04-13 17:13:21 UTC (rev 515)
@@ -1,3 +1,4 @@
+lutinvcs.changelog.title=Changelog UI
lutinvcs.commit.message=Renseigner le message de publication
lutinvcs.confirm.title=Confirm UI
lutinvcs.diff.title=Diff UI
Added: trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-changelog.png
===================================================================
(Binary files differ)
Property changes on: trunk/lutinvcs/ui/jaxx/src/main/resources/icons/action-changelog.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx (from rev 511, trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxDiffUI.jaxx)
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx (rev 0)
+++ trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxChangelogUI.jaxx 2008-04-13 17:13:21 UTC (rev 515)
@@ -0,0 +1,40 @@
+<ChangelogUI title='lutinvcs.changelog.title' modal="true" defaultCloseOperation='DISPOSE_ON_CLOSE' height='600' width='500'>
+ <style source="common.css"/>
+ <script>
+ import static org.codelutin.vcs.type.VCSAction.*;
+ import static org.codelutin.vcs.type.VCSEntryLocation.*;
+ </script>
+ <Table>
+ <row fill='both'>
+ <cell fill='both' weightx='1'>
+ <JToolBar>
+ <JToggleButton id='allTab' action='{createLocationAction(ALL)}'/>
+ <JToggleButton id='localTab' action='{createLocationAction(LOCAL)}'/>
+ <JToggleButton id='remoteTab' action='{createLocationAction(REMOTE)}'/>
+ <JSeparator orientation="vertical"/>
+ <JButton id='refresh' action='{createAction(REFRESH,true)}'/>
+ <JSeparator orientation="vertical"/>
+ <JButton id='update' action='{createAction(UPDATE,true)}'/>
+ <!--JButton id='commit' action='{createAction(COMMIT,true)}'/-->
+ <JButton id='revert' action='{createAction(REVERT,true)}'/>
+ <JSeparator orientation="vertical"/>
+ <JButton id='help' action='{createHelpAction()}'/>
+ </JToolBar>
+ </cell>
+ </row>
+ <row fill='both'>
+ <cell fill='both'>
+ <JScrollPane id='contentScroll' styleClass='diffScroll' height='100'>
+ <JTable id="contentTable" styleClass='diffTable'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <row fill='both'>
+ <cell fill='both' weighty='1' weightx='1'>
+ <JScrollPane id='changelogScroll' styleClass='diffScroll'>
+ <JTextArea id="changelogContent" editable='false'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ </Table>
+</ChangelogUI>
Modified: trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxSynchUI.jaxx
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxSynchUI.jaxx 2008-04-13 17:12:54 UTC (rev 514)
+++ trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxSynchUI.jaxx 2008-04-13 17:13:21 UTC (rev 515)
@@ -7,6 +7,7 @@
<JPopupMenu id="popup" invoker='{contentTable}'>
<JMenuItem id='refresh' action='{createAction(REFRESH,true)}' font-size='10'/>
<JMenuItem id='diff' action='{createAction(DIFF,true)}' font-size='10'/>
+ <JMenuItem id='changelog' action='{createAction(CHANGELOG,true)}' font-size='10'/>
<JSeparator/>
<JMenuItem id='update' action='{createAction(UPDATE,true)}' font-size='10'/>
<JMenuItem id='revert' action='{createAction(REVERT,true)}' font-size='10'/>
@@ -26,6 +27,7 @@
<JSeparator orientation="vertical"/>
<JButton id='refreshAll' action='{createAction(REFRESH,false)}'/>
<JButton id='diffAll' action='{createAction(DIFF,false)}'/>
+ <JButton id='changelogAll' action='{createAction(CHANGELOG,false)}'/>
<JSeparator orientation="vertical"/>
<JButton id='updateAll' action='{createAction(UPDATE,false)}'/>
<JButton id='revertAll' action='{createAction(REVERT,false)}'/>
Modified: trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxVCSUIProvider.java
===================================================================
--- trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxVCSUIProvider.java 2008-04-13 17:12:54 UTC (rev 514)
+++ trunk/lutinvcs/ui/jaxx/src/main/uimodel/org/codelutin/vcs/ui/JaxxVCSUIProvider.java 2008-04-13 17:13:21 UTC (rev 515)
@@ -18,6 +18,6 @@
public class JaxxVCSUIProvider extends VCSUIProvider {
public JaxxVCSUIProvider() {
- super("jaxx", JaxxSynchUI.class, JaxxDiffUI.class, JaxxConfirmUI.class);
+ super("jaxx", JaxxSynchUI.class, JaxxDiffUI.class, JaxxChangelogUI.class,JaxxConfirmUI.class);
}
}
\ No newline at end of file
1
0
r514 - in trunk/lutinvcs: core/src/main/java/org/codelutin/vcs/type ui/common/src/main/java/org/codelutin/vcs/ui/util
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 17:12:54 +0000 (Sun, 13 Apr 2008)
New Revision: 514
Modified:
trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSAction.java
trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSState.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractUIAction.java
Log:
add changelog ui
Modified: trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSAction.java
===================================================================
--- trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSAction.java 2008-04-13 17:12:21 UTC (rev 513)
+++ trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSAction.java 2008-04-13 17:12:54 UTC (rev 514)
@@ -55,7 +55,7 @@
/** to acquire a file from repository */
CHECKOUT(n_("lutinvcs.action.checkout"), true, false, false, false),
/** to obtain the changelog of a file */
- CHANGELOG(n_("lutinvcs.action.changeLog"), false, false, false, false),
+ CHANGELOG(n_("lutinvcs.action.changeLog"), true, false, false, false),
/** to obtain diif */
DIFF(n_("lutinvcs.action.diff"), false, false, false, false);
Modified: trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSState.java
===================================================================
--- trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSState.java 2008-04-13 17:12:21 UTC (rev 513)
+++ trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/type/VCSState.java 2008-04-13 17:12:54 UTC (rev 514)
@@ -10,6 +10,9 @@
import static org.codelutin.vcs.type.VCSAction.OVERWRITE_AND_UPDATE;
import static org.codelutin.vcs.type.VCSAction.REVERT;
import static org.codelutin.vcs.type.VCSAction.UPDATE;
+import static org.codelutin.vcs.type.VCSEntryLocation.ALL;
+import static org.codelutin.vcs.type.VCSEntryLocation.LOCAL;
+import static org.codelutin.vcs.type.VCSEntryLocation.REMOTE;
import java.util.ArrayList;
import java.util.Arrays;
@@ -30,7 +33,7 @@
* <br/>
* The only action for this state is to delete the file, nothing else.
*/
- UP_TO_DATE("uptodate", n_("lutinvcs.state.uptodate"), VCSEntryLocation.ALL, DELETE),
+ UP_TO_DATE("uptodate", n_("lutinvcs.state.uptodate"), ALL, DELETE),
/**
* when a local file matches a remote copy but not the latest one.
@@ -42,7 +45,7 @@
* <li>{@link VCSAction#CHANGELOG}</li>
* </ul>
*/
- OUT_OF_DATE("outofdate", n_("lutinvcs.state.outofdate"), VCSEntryLocation.REMOTE, UPDATE, DIFF, CHANGELOG),
+ OUT_OF_DATE("outofdate", n_("lutinvcs.state.outofdate"), REMOTE, UPDATE, DIFF, CHANGELOG),
/**
* when a local file does not matches his remote latest copy, but is based
@@ -55,7 +58,7 @@
* <li>{@link VCSAction#DIFF}</li>
* </ul>
*/
- MODIFIED("modified", n_("lutinvcs.state.modified"), VCSEntryLocation.LOCAL, COMMIT, OVERWRITE_AND_UPDATE, REVERT, DIFF),
+ MODIFIED("modified", n_("lutinvcs.state.modified"), LOCAL, COMMIT, OVERWRITE_AND_UPDATE, REVERT, DIFF),
/**
* when a local file does not match the working version remote copy and
@@ -69,7 +72,7 @@
* <li>{@link VCSAction#CHANGELOG}</li>
* </ul>
*/
- OUT_OF_DATE_AND_MODIFIED("outofdateAndModified", n_("lutinvcs.state.outofdateAndModified"), VCSEntryLocation.ALL, OVERWRITE_AND_UPDATE, REVERT, DIFF, CHANGELOG),
+ OUT_OF_DATE_AND_MODIFIED("outofdateAndModified", n_("lutinvcs.state.outofdateAndModified"), ALL, OVERWRITE_AND_UPDATE, REVERT, DIFF, CHANGELOG),
/**
* when a local file does not exist on remote repository.
@@ -78,7 +81,7 @@
* <li>{@link VCSAction#ADD}</li>
* </ul>
*/
- UNVERSIONNED("unversionned", n_("lutinvcs.state.unversionned"), VCSEntryLocation.LOCAL, ADD, REVERT),
+ UNVERSIONNED("unversionned", n_("lutinvcs.state.unversionned"), LOCAL, ADD, REVERT),
/**
* when a file exists on remote repository but not locally.
@@ -87,7 +90,7 @@
* <li>{@link VCSAction#UPDATE}</li>
* </ul>
*/
- MISSING("missing", n_("lutinvcs.state.missing"), VCSEntryLocation.REMOTE, UPDATE),
+ MISSING("missing", n_("lutinvcs.state.missing"), REMOTE, UPDATE, CHANGELOG),
/**
* when a file is unversionned or missing : this special and durty state
@@ -103,9 +106,17 @@
* <p/>
* </ul>
*/
- UNVERSIONNED_OR_MISSING("unversionnedOrMissing", n_("lutinvcs.state.unversionnedOrMissing"), VCSEntryLocation.LOCAL, ADD, UPDATE),
+ UNVERSIONNED_OR_MISSING("unversionnedOrMissing", n_("lutinvcs.state.unversionnedOrMissing"), LOCAL, ADD, UPDATE),
- REMOVED("removed", n_("lutinvcs.state.removed"), VCSEntryLocation.LOCAL, DELETE, REVERT),
+ /**
+ * when a file was removed locally, and still exists on remote repository.
+ * <p/>
+ * this state owns 1 action :
+ * <ul>
+ * <li> {@link VCSAction#DELETE}</li>
+ * </ul>
+ */
+ REMOVED("removed", n_("lutinvcs.state.removed"), LOCAL, DELETE, REVERT),
/** to deal with other cases (...) */
UNKNOWN("unknown", n_("lutinvcs.state.unknown"), null);
@@ -150,11 +161,11 @@
}
public boolean isLocal() {
- return location != VCSEntryLocation.REMOTE;
+ return location != REMOTE;
}
public boolean isRemote() {
- return location != VCSEntryLocation.LOCAL;
+ return location != LOCAL;
}
public boolean authorizeAction(VCSAction... actions) {
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java 2008-04-13 17:12:21 UTC (rev 513)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUI.java 2008-04-13 17:12:54 UTC (rev 514)
@@ -16,8 +16,6 @@
import org.codelutin.vcs.type.VCSAction;
import org.codelutin.vcs.type.VCSEntryLocation;
-import org.codelutin.vcs.ui.action.ChangeLocationAction;
-import org.codelutin.vcs.ui.action.TabUIAction;
import javax.swing.AbstractAction;
import javax.swing.AbstractButton;
@@ -38,7 +36,6 @@
public abstract AbstractButton getUpdate();
- public abstract AbstractButton getCommit();
public abstract AbstractButton getRevert();
@@ -57,11 +54,11 @@
}
protected AbstractAction createLocationAction(VCSEntryLocation location) {
- return ChangeLocationAction.createAction(location, this);
+ return org.codelutin.vcs.ui.action.ChangeLocationAction.createAction(location, this);
}
protected AbstractAction createAction(VCSAction action, boolean useSelection) {
- return TabUIAction.createAction(action, useSelection, this);
+ return org.codelutin.vcs.ui.action.TabUIAction.createAction(action, useSelection, this);
}
}
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java 2008-04-13 17:12:21 UTC (rev 513)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractTabUIHandler.java 2008-04-13 17:12:54 UTC (rev 514)
@@ -19,6 +19,7 @@
import org.codelutin.vcs.ui.ConfirmUI;
import org.codelutin.vcs.ui.DiffUI;
import org.codelutin.vcs.ui.VCSUIFactory;
+import org.codelutin.vcs.ui.ChangelogUI;
import javax.swing.AbstractButton;
import javax.swing.ListSelectionModel;
@@ -51,25 +52,37 @@
}
public void showConfirmUI(VCSAction action, AbstractVCSEntriesTableModel model, List<VCSEntry> entries) {
- ConfirmUI confirmUI = VCSUIFactory.newConfirmUI();
+ ConfirmUI ui = VCSUIFactory.newConfirmUI();
log.info("nb files:" + entries.size());
- confirmUI.getHandler().getModel().init(action, model.getLocation(), entries.toArray(new VCSEntry[entries.size()]));
- confirmUI.getContentScroll().setEnabled(entries.size() > 1);
- confirmUI.setVisible(true);
+ ui.getHandler().getModel().init(action, model.getLocation(), entries.toArray(new VCSEntry[entries.size()]));
+ ui.getContentScroll().setEnabled(entries.size() > 1);
+ ui.setVisible(true);
}
public void showDiffUI(boolean useSelection, AbstractVCSEntriesTableModel model, List<VCSEntry> entries) {
- DiffUI diffUI = VCSUIFactory.newDiffUI();
+ DiffUI ui = VCSUIFactory.newDiffUI();
if (!useSelection) {
// take all entries
entries = model.filter(VCSAction.DIFF, model.getEntries());
}
log.info("nb entries:" + entries.size());
- diffUI.getHandler().getModel().init(model.getLocation(), entries.toArray(new VCSEntry[entries.size()]));
- diffUI.getContentScroll().setEnabled(entries.size() > 1);
- diffUI.setVisible(true);
+ ui.getHandler().getModel().init(model.getLocation(), entries.toArray(new VCSEntry[entries.size()]));
+ ui.getContentScroll().setEnabled(entries.size() > 1);
+ ui.setVisible(true);
}
+ public void showChangelogUI(boolean useSelection, AbstractVCSEntriesTableModel model, List<VCSEntry> entries) {
+ ChangelogUI ui = VCSUIFactory.newChangelogUI();
+ if (!useSelection) {
+ // take all entries
+ entries = model.filter(VCSAction.CHANGELOG, model.getEntries());
+ }
+ log.info("nb entries:" + entries.size());
+ ui.getHandler().getModel().init(model.getLocation(), entries.toArray(new VCSEntry[entries.size()]));
+ ui.getContentScroll().setEnabled(entries.size() > 1);
+ ui.setVisible(true);
+ }
+
public void doRefresh(AbstractVCSEntriesTableModel model, List<VCSEntry> entries, ListSelectionModel selectionModel) {
log.info(selectionModel);
selectionModel.clearSelection();
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractUIAction.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractUIAction.java 2008-04-13 17:12:21 UTC (rev 513)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/util/AbstractUIAction.java 2008-04-13 17:12:54 UTC (rev 514)
@@ -31,6 +31,9 @@
super(name, icon);
}
+ public AbstractUIAction() {
+ }
+
protected H getHandler() {
checkInit();
if (handler == null) {
1
0
r513 - in trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui: . action handler model
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 17:12:21 +0000 (Sun, 13 Apr 2008)
New Revision: 513
Added:
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java
Modified:
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUI.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUIFactory.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/TabUIAction.java
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java
Log:
add changelog ui
Copied: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java (from rev 511, trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java)
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java (rev 0)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/ChangelogUI.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -0,0 +1,36 @@
+/**
+ * ##% Copyright (C) 2008 Code Lutin, 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 javax.swing.AbstractButton;
+
+/** @author chemit */
+public abstract class ChangelogUI extends org.codelutin.vcs.ui.util.AbstractTabUI<org.codelutin.vcs.ui.handler.ChangelogUIHandler> {
+
+ @Override
+ public void setVisible(boolean b) {
+ if (b) {
+ AbstractButton button = getButton(getHandler().getLocation());
+ if (button == null) {
+ button = getAllTab();
+ }
+ button.doClick();
+ if (getContentTable().getRowCount() > 0)
+ getHandler().getSelectionModel().setSelectionInterval(0, 0);
+ }
+ super.setVisible(b);
+ }
+
+}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java 2008-04-13 17:01:36 UTC (rev 512)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/DiffUI.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -14,8 +14,6 @@
*/
package org.codelutin.vcs.ui;
-import org.codelutin.vcs.ui.action.DiffAction;
-
import javax.swing.AbstractAction;
import javax.swing.AbstractButton;
@@ -26,6 +24,8 @@
public abstract AbstractButton getPreviousDiff();
+ public abstract AbstractButton getCommit();
+
@Override
public void setVisible(boolean b) {
if (b) {
@@ -41,6 +41,6 @@
}
protected AbstractAction createDiffAction(boolean goUp) {
- return DiffAction.createAction(goUp, this);
+ return org.codelutin.vcs.ui.action.DiffAction.createAction(goUp, this);
}
}
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java 2008-04-13 17:01:36 UTC (rev 512)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/SynchUI.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -24,6 +24,8 @@
public abstract AbstractButton getDiffAll();
+ public abstract AbstractButton getChangelogAll();
+
public abstract AbstractButton getUpdateAll();
public abstract AbstractButton getCommitAll();
@@ -36,10 +38,14 @@
public abstract AbstractButton getDiff();
+ public abstract AbstractButton getChangelog();
+
public abstract AbstractButton getAdd();
public abstract AbstractButton getDelete();
+ public abstract AbstractButton getCommit();
+
public abstract JPopupMenu getPopup();
@Override
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUI.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUI.java 2008-04-13 17:01:36 UTC (rev 512)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUI.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -22,12 +22,13 @@
* @author chemit
* @see AbstractUI
* @see AbstractUIModel
- * @see org.codelutin.vcs.ui.util.AbstractUIHandler
+ * @see AbstractUIHandler
*/
public enum VCSUI {
synch(SynchUI.class, org.codelutin.vcs.ui.handler.SynchUIHandler.class),
diff(DiffUI.class, org.codelutin.vcs.ui.handler.DiffUIHandler.class),
+ changelog(ChangelogUI.class, org.codelutin.vcs.ui.handler.ChangelogUIHandler.class),
confirm(ConfirmUI.class, org.codelutin.vcs.ui.handler.ConfirmUIHandler.class);
private final Class<? extends AbstractUI> uiClass;
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUIFactory.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUIFactory.java 2008-04-13 17:01:36 UTC (rev 512)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/VCSUIFactory.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -18,9 +18,6 @@
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.StringUtil;
import org.codelutin.vcs.VCSFactory;
-import org.codelutin.vcs.ui.ConfirmUI;
-import org.codelutin.vcs.ui.DiffUI;
-import org.codelutin.vcs.ui.SynchUI;
import org.codelutin.vcs.ui.util.AbstractUI;
import java.lang.reflect.InvocationTargetException;
@@ -47,14 +44,18 @@
return (SynchUI) getInstance().newUI(VCSUI.synch);
}
+ public static DiffUI newDiffUI() {
+ return (DiffUI) getInstance().newUI(VCSUI.diff);
+ }
+
+ public static ChangelogUI newChangelogUI() {
+ return (ChangelogUI) getInstance().newUI(VCSUI.changelog);
+ }
+
public static ConfirmUI newConfirmUI() {
return (ConfirmUI) getInstance().newUI(VCSUI.confirm);
}
- public static DiffUI newDiffUI() {
- return (DiffUI) getInstance().newUI(VCSUI.diff);
- }
-
public void close() {
if (cache != null) {
cache.clear();
@@ -86,6 +87,7 @@
return cache;
}
+
protected synchronized ServiceLoader<VCSUIProvider> getProviders() {
if (loader == null) {
long t0 = System.nanoTime();
@@ -101,7 +103,6 @@
return loader;
}
-
protected AbstractUI newUI(VCSUI uiType) {
AbstractUI result = getInstance().getCache().get(uiType);
@@ -134,5 +135,4 @@
protected VCSUIFactory() {
}
-
}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/TabUIAction.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/TabUIAction.java 2008-04-13 17:01:36 UTC (rev 512)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/action/TabUIAction.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -49,7 +49,7 @@
List<VCSEntry> entries = model.filter(action, model.getDisplayedEntries(useSelection ? handler.getSelectionModel() : null));
switch (action) {
case CHANGELOG:
- //TODO
+ handler.showChangelogUI(useSelection, model, entries);
return;
case DIFF:
handler.showDiffUI(useSelection, model, entries);
Copied: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java (from rev 511, trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/DiffUIHandler.java)
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java (rev 0)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/ChangelogUIHandler.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -0,0 +1,95 @@
+/**
+ * ##% Copyright (C) 2008 Code Lutin, 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.handler;
+
+import static org.codelutin.i18n.I18n._;
+import org.codelutin.vcs.VCSEntry;
+import org.codelutin.vcs.type.VCSAction;
+import org.codelutin.vcs.ui.ChangelogUI;
+import org.codelutin.vcs.ui.model.ChangelogUIModel;
+import org.codelutin.vcs.ui.model.DiffUIModel;
+import org.codelutin.vcs.ui.util.AbstractTabUIHandler;
+
+import javax.swing.AbstractButton;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import java.beans.PropertyChangeEvent;
+import java.util.Collections;
+import java.util.EnumMap;
+
+/** @author chemit */
+public class ChangelogUIHandler extends AbstractTabUIHandler<ChangelogUIModel, ChangelogUI> {
+
+ public ChangelogUIHandler(ChangelogUI ui) {
+ super(ui, new ChangelogUIModel());
+ ui.setHandler(this);
+ }
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
+ if (DiffUIModel.FILE_PROPERTY_CHANGED.equals(evt.getPropertyName())) {
+ afterSelectionChanged();
+ return;
+ }
+ super.propertyChange(evt);
+ }
+
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ if (!e.getValueIsAdjusting()) {
+ // update model selected file ? TODO Is this really necessary,
+ ListSelectionModel selectionModel = (ListSelectionModel) e.getSource();
+ VCSEntry vcsEntry = null;
+ if (!selectionModel.isSelectionEmpty()) {
+ vcsEntry = getModel().getEntriesModel().getDisplayedEntry(selectionModel.getMinSelectionIndex());
+ }
+ getModel().setFileModel(vcsEntry);
+ }
+ }
+
+ public void afterLocationChanged() {
+ if (getModel().getEntriesModel().getRowCount() > 0) {
+ // select first row
+ getSelectionModel().addSelectionInterval(0, 0);
+ }
+ }
+
+ protected void afterSelectionChanged() {
+
+ VCSEntry vcsEntry = getModel().getFileModel();
+ EnumMap<VCSAction, Integer> actions = vcsEntry == null ? null : getModel().getEntriesModel().countActions(Collections.singletonList(vcsEntry));
+ boolean hasActions = actions != null && !actions.isEmpty();
+ ChangelogUI ui = getUi();
+ updateAction(actions, hasActions, ui.getUpdate(), VCSAction.UPDATE, vcsEntry);
+ updateAction(actions, hasActions, ui.getRevert(), VCSAction.REVERT, vcsEntry);
+ updateAction(actions, hasActions, ui.getRefresh(), VCSAction.REFRESH, vcsEntry);
+ //TODO init changelog handler
+ log.info("//TODO: show changleog for "+vcsEntry);
+
+ }
+
+ protected void updateAction(EnumMap<VCSAction, Integer> actions, boolean hasActions, AbstractButton ui, VCSAction action, VCSEntry vcsEntry) {
+ super.updateAction(actions, hasActions, ui, action);
+ boolean useAction = hasActions && actions.containsKey(action) && actions.get(action) > 0;
+ String tip = null;
+ if (useAction) {
+ tip = _("lutinvcs.action.single.tip", action.getLibelle(), vcsEntry.getFile().getName());
+ }
+ ui.setToolTipText(tip);
+ }
+}
\ No newline at end of file
Modified: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java 2008-04-13 17:01:36 UTC (rev 512)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/handler/SynchUIHandler.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -65,6 +65,7 @@
SynchUI ui = getUi();
int nbFiles = actions.get(VCSAction.REFRESH);
updateAction(actions, hasActions, ui.getDiff(), VCSAction.DIFF, false, nbFiles);
+ updateAction(actions, hasActions, ui.getChangelog(), VCSAction.CHANGELOG, false, nbFiles);
updateAction(actions, hasActions, ui.getUpdate(), VCSAction.UPDATE, false, nbFiles);
updateAction(actions, hasActions, ui.getRevert(), VCSAction.REVERT, false, nbFiles);
updateAction(actions, hasActions, ui.getCommit(), VCSAction.COMMIT, false, nbFiles);
@@ -81,6 +82,7 @@
// refresh actions is enabled on all files
int nbFiles = actions.get(VCSAction.REFRESH);
updateAction(actions, hasActions, ui.getDiffAll(), VCSAction.DIFF, true, nbFiles);
+ updateAction(actions, hasActions, ui.getChangelogAll(), VCSAction.CHANGELOG, true, nbFiles);
updateAction(actions, hasActions, ui.getUpdateAll(), VCSAction.UPDATE, true, nbFiles);
updateAction(actions, hasActions, ui.getRevertAll(), VCSAction.REVERT, true, nbFiles);
updateAction(actions, hasActions, ui.getCommitAll(), VCSAction.COMMIT, true, nbFiles);
Copied: trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java (from rev 511, trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/DiffUIModel.java)
===================================================================
--- trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java (rev 0)
+++ trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/model/ChangelogUIModel.java 2008-04-13 17:12:21 UTC (rev 513)
@@ -0,0 +1,49 @@
+/**
+ * ##% Copyright (C) 2008 Code Lutin, 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.model;
+
+import org.codelutin.vcs.VCSEntry;
+import org.codelutin.vcs.type.VCSEntryLocation;
+import org.codelutin.vcs.ui.util.AbstractTabUIModel;
+
+/**
+ * Model of a repository
+ *
+ * @author chemit
+ */
+public class ChangelogUIModel extends AbstractTabUIModel {
+
+ public static final String FILE_PROPERTY_CHANGED = "file";
+
+ /** current file displayed */
+ protected VCSEntry fileModel;
+
+ public VCSEntry getFileModel() {
+ return fileModel;
+ }
+
+ public void setFileModel(VCSEntry fileModel) {
+ VCSEntry oldFileModel = this.fileModel;
+ this.fileModel = fileModel;
+ firePropertyChange(FILE_PROPERTY_CHANGED, oldFileModel, 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
1
0
r512 - trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 17:01:36 +0000 (Sun, 13 Apr 2008)
New Revision: 512
Added:
trunk/lutinvcs/ui/common/src/main/java/org/codelutin/vcs/ui/diff/
Log:
diff package
1
0
r511 - trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/svn
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 15:59:24 +0000 (Sun, 13 Apr 2008)
New Revision: 511
Modified:
trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/svn/SVNConnexion.java
Log:
package provider
Modified: trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/svn/SVNConnexion.java
===================================================================
--- trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/svn/SVNConnexion.java 2008-04-13 15:59:12 UTC (rev 510)
+++ trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/svn/SVNConnexion.java 2008-04-13 15:59:24 UTC (rev 511)
@@ -18,7 +18,7 @@
import org.codelutin.vcs.VCSConnexionConfig;
import org.codelutin.vcs.VCSException;
import org.codelutin.vcs.VCSRuntimeException;
-import org.codelutin.vcs.SVNProvider;
+import org.codelutin.vcs.provider.SVNProvider;
import org.codelutin.vcs.type.VCSConnectionState;
import org.codelutin.vcs.type.VCSConnexionMode;
import org.codelutin.vcs.util.AbstractVCSConnexion;
1
0
r510 - in trunk/lutinvcs/provider/svn/src: main/java/org/codelutin/vcs main/java/org/codelutin/vcs/provider main/resources/META-INF/services test/java/org/codelutin/vcs/provider/svn
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
by tchemit@users.labs.libre-entreprise.org 13 Apr '08
13 Apr '08
Author: tchemit
Date: 2008-04-13 15:59:12 +0000 (Sun, 13 Apr 2008)
New Revision: 510
Added:
trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/SVNProvider.java
Removed:
trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/SVNProvider.java
Modified:
trunk/lutinvcs/provider/svn/src/main/resources/META-INF/services/org.codelutin.vcs.VCSProvider
trunk/lutinvcs/provider/svn/src/test/java/org/codelutin/vcs/provider/svn/FindTypeRepoTest.java
Log:
package provider
Deleted: trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/SVNProvider.java
===================================================================
--- trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/SVNProvider.java 2008-04-13 15:58:23 UTC (rev 509)
+++ trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/SVNProvider.java 2008-04-13 15:59:12 UTC (rev 510)
@@ -1,240 +0,0 @@
-/**
- * ##% Copyright (C) 2008 Code Lutin, 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.codelutin.vcs.provider.svn.SVNConnexion;
-import org.codelutin.vcs.provider.svn.SVNHandler;
-import org.codelutin.vcs.type.VCSTypeRepo;
-import org.codelutin.vcs.util.AbstractVCSHandler;
-import org.codelutin.vcs.util.AbstractVCSProvider;
-import org.tmatesoft.svn.core.SVNException;
-import org.tmatesoft.svn.core.SVNNodeKind;
-import org.tmatesoft.svn.core.SVNURL;
-import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
-import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
-import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
-import org.tmatesoft.svn.core.io.SVNRepository;
-import org.tmatesoft.svn.core.wc.ISVNOptions;
-import org.tmatesoft.svn.core.wc.SVNClientManager;
-import org.tmatesoft.svn.core.wc.SVNRevision;
-import org.tmatesoft.svn.core.wc.SVNWCUtil;
-
-import java.util.Arrays;
-
-/**
- * SVN Provider
- *
- * @author chemit
- */
-public class SVNProvider extends AbstractVCSProvider<SVNConnexion, SVNHandler> {
-
- private static boolean libraryInit;
-
- public SVNProvider() {
-
- super("SVN", SVNHandler.class, SVNConnexion.class);
-
- setupLibrary();
- }
-
- /**
- * Test if a anonymous svn connection can be openned.
- *
- * @param url the svn url to test
- * @return <code>true</code> if connection is ok,<code>false</code> otherwise.
- * @throws org.codelutin.vcs.VCSException if could not compute the SVNURL
- */
- public static boolean testAnonymousConnection(String url) throws VCSException {
- boolean result = true;
-
- SVNRepository repository = getAnonymousConnection(url);
- try {
- repository.testConnection();
- } catch (SVNException e) {
- result = false;
- } finally {
- if (repository != null) {
- try {
- repository.closeSession();
- } catch (Exception e) {
- log.warn(e);
- }
- }
- }
- return result;
- }
-
- /**
- * Test if a anonymous svn connection can be openned.
- *
- * @param url the svn url to test
- * @param username user name
- * @param privateKeyFilePath the file to used as protected key file
- * @param passphrase passphrase to use
- * @return <code>true</code> if connection is ok,<code>false</code> otherwise.
- * @throws org.codelutin.vcs.VCSException if could not compute the SVNURL
- */
- public static boolean testSSHConnection(String url, String username, String privateKeyFilePath, char[] passphrase) throws VCSException {
- boolean result = true;
-
- SVNRepository repository = getSSHConnection(url, username, privateKeyFilePath, passphrase);
- try {
- repository.testConnection();
- } catch (SVNException e) {
- result = false;
- } finally {
- if (repository != null) {
- try {
- repository.closeSession();
- } catch (Exception e) {
- log.warn(e);
- }
- }
- }
- return result;
- }
-
- public static SVNRepository getAnonymousConnection(String url) throws VCSException {
-
- setupLibrary();
-
- SVNURL testRepositoryURL;
- try {
- testRepositoryURL = SVNURL.parseURIEncoded(url);
- } catch (SVNException e) {
- throw new VCSException(e);
- }
- SVNRepository repository;
- try {
- ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
- SVNClientManager manager = SVNClientManager.newInstance(options, "anonymous", "anonymous");
- repository = manager.createRepository(testRepositoryURL, false);
- repository.testConnection();
- return repository;
- } catch (SVNException e) {
- throw new VCSException(e);
- }
- }
-
- public static SVNRepository getSSHConnection(String url, String username, String privateKeyFilePath, char[] passphrase) throws VCSException {
-
- setupLibrary();
-
- SVNURL testRepositoryURL;
- try {
- testRepositoryURL = SVNURL.parseURIEncoded(url);
- } catch (SVNException e) {
- throw new VCSException(e);
- }
- SVNRepository repository;
- try {
- ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
- System.setProperty("svnkit.ssh2.key", privateKeyFilePath);
- System.setProperty("svnkit.ssh2.username", username);
- if (passphrase != null && passphrase.length > 0) {
- System.setProperty("svnkit.ssh2.passphrase", Arrays.toString(passphrase));
- }
- //System.setProperty("svnkit.ssh2.passphrase", "");
- //System.setProperty("svnkit.ssh2.password", "");
- //System.setProperty("svnkit.ssh2.port", "22");
-
- // instanciate svn client manager
- SVNClientManager manager = SVNClientManager.newInstance(options);
- repository = manager.createRepository(testRepositoryURL, false);
- repository.testConnection();
- return repository;
- } catch (SVNException e) {
- throw new VCSException(e);
- }
- }
-
- /**
- * TODO This method is specifi to IsisFish, must be removed from here.
- * TODO Implement a IsisSVNProvider ?
- *
- * @param typeRepo the type of repo we want to use if possible
- * @param uncleanRemotePath remote path (could be unclean)
- * @param databaseVersion the database version to use
- * @param hostName the hostname to use
- * @return the typeRepo to use
- * @throws org.codelutin.vcs.VCSException if could not compute SVNURL to tests
- */
- public static VCSTypeRepo findTypeRepo(VCSTypeRepo typeRepo,
- String uncleanRemotePath,
- String databaseVersion,
- String hostName) throws VCSException {
-
-
- VCSTypeRepo result;
-
- String remotePath = AbstractVCSHandler.getRemotePath(typeRepo, uncleanRemotePath);
- String remoteDatabase = AbstractVCSHandler.getRemoteDatabase(typeRepo, databaseVersion);
- StringBuilder sb = new StringBuilder("svn://").append(hostName);
- sb.append("/").append(remotePath);
- String url = sb.toString();
- log.info("try svn url " + url + " (" + remoteDatabase + ")");
-
- SVNRepository repository;
- try {
- repository = getAnonymousConnection(url);
- } catch (VCSException e) {
- log.warn(e);
- return null;
- }
-
- try {
- SVNNodeKind kind = repository.checkPath(remoteDatabase, SVNRevision.HEAD.getNumber());
- log.info("kind node found for " + remoteDatabase + " : " + kind);
- // typeRepo type is ok, use it
- if (kind == SVNNodeKind.NONE) {
- // could not found the remote database
- if (typeRepo == VCSTypeRepo.HEAD) {
- // this is a fatal error since head always exists
- throw new VCSRuntimeException("could not found svn trunk " + url + " (" + repository.getLocation() + ")");
- } else {
- result = VCSTypeRepo.HEAD;
- }
- } else {
- // was found, so keep it
- result = typeRepo;
- }
- } catch (SVNException e) {
- throw new VCSRuntimeException(e);
- }
- log.info("required:" + typeRepo + " available:" + result);
- return result;
- }
-
- static void setupLibrary() {
- if (libraryInit) {
- return;
- }
- libraryInit = true;
- /*
- * For using over http:// and https://
- */
- DAVRepositoryFactory.setup();
-
- /*
- * For using over svn:// and svn+xxx://
- */
- SVNRepositoryFactoryImpl.setup();
-
- /*
- * For using over file:///
- */
- FSRepositoryFactory.setup();
- }
-}
Copied: trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/SVNProvider.java (from rev 508, trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/SVNProvider.java)
===================================================================
--- trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/SVNProvider.java (rev 0)
+++ trunk/lutinvcs/provider/svn/src/main/java/org/codelutin/vcs/provider/SVNProvider.java 2008-04-13 15:59:12 UTC (rev 510)
@@ -0,0 +1,242 @@
+/**
+ * ##% Copyright (C) 2008 Code Lutin, 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.provider;
+
+import org.codelutin.vcs.provider.svn.SVNConnexion;
+import org.codelutin.vcs.provider.svn.SVNHandler;
+import org.codelutin.vcs.type.VCSTypeRepo;
+import org.codelutin.vcs.util.AbstractVCSHandler;
+import org.codelutin.vcs.util.AbstractVCSProvider;
+import org.codelutin.vcs.VCSException;
+import org.codelutin.vcs.VCSRuntimeException;
+import org.tmatesoft.svn.core.SVNException;
+import org.tmatesoft.svn.core.SVNNodeKind;
+import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
+import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
+import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
+import org.tmatesoft.svn.core.io.SVNRepository;
+import org.tmatesoft.svn.core.wc.ISVNOptions;
+import org.tmatesoft.svn.core.wc.SVNClientManager;
+import org.tmatesoft.svn.core.wc.SVNRevision;
+import org.tmatesoft.svn.core.wc.SVNWCUtil;
+
+import java.util.Arrays;
+
+/**
+ * SVN Provider
+ *
+ * @author chemit
+ */
+public class SVNProvider extends AbstractVCSProvider<SVNConnexion, SVNHandler> {
+
+ private static boolean libraryInit;
+
+ public SVNProvider() {
+
+ super("SVN", SVNHandler.class, SVNConnexion.class);
+
+ setupLibrary();
+ }
+
+ /**
+ * Test if a anonymous svn connection can be openned.
+ *
+ * @param url the svn url to test
+ * @return <code>true</code> if connection is ok,<code>false</code> otherwise.
+ * @throws org.codelutin.vcs.VCSException if could not compute the SVNURL
+ */
+ public static boolean testAnonymousConnection(String url) throws VCSException {
+ boolean result = true;
+
+ SVNRepository repository = getAnonymousConnection(url);
+ try {
+ repository.testConnection();
+ } catch (SVNException e) {
+ result = false;
+ } finally {
+ if (repository != null) {
+ try {
+ repository.closeSession();
+ } catch (Exception e) {
+ log.warn(e);
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Test if a anonymous svn connection can be openned.
+ *
+ * @param url the svn url to test
+ * @param username user name
+ * @param privateKeyFilePath the file to used as protected key file
+ * @param passphrase passphrase to use
+ * @return <code>true</code> if connection is ok,<code>false</code> otherwise.
+ * @throws org.codelutin.vcs.VCSException if could not compute the SVNURL
+ */
+ public static boolean testSSHConnection(String url, String username, String privateKeyFilePath, char[] passphrase) throws VCSException {
+ boolean result = true;
+
+ SVNRepository repository = getSSHConnection(url, username, privateKeyFilePath, passphrase);
+ try {
+ repository.testConnection();
+ } catch (SVNException e) {
+ result = false;
+ } finally {
+ if (repository != null) {
+ try {
+ repository.closeSession();
+ } catch (Exception e) {
+ log.warn(e);
+ }
+ }
+ }
+ return result;
+ }
+
+ public static SVNRepository getAnonymousConnection(String url) throws VCSException {
+
+ setupLibrary();
+
+ SVNURL testRepositoryURL;
+ try {
+ testRepositoryURL = SVNURL.parseURIEncoded(url);
+ } catch (SVNException e) {
+ throw new VCSException(e);
+ }
+ SVNRepository repository;
+ try {
+ ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
+ SVNClientManager manager = SVNClientManager.newInstance(options, "anonymous", "anonymous");
+ repository = manager.createRepository(testRepositoryURL, false);
+ repository.testConnection();
+ return repository;
+ } catch (SVNException e) {
+ throw new VCSException(e);
+ }
+ }
+
+ public static SVNRepository getSSHConnection(String url, String username, String privateKeyFilePath, char[] passphrase) throws VCSException {
+
+ setupLibrary();
+
+ SVNURL testRepositoryURL;
+ try {
+ testRepositoryURL = SVNURL.parseURIEncoded(url);
+ } catch (SVNException e) {
+ throw new VCSException(e);
+ }
+ SVNRepository repository;
+ try {
+ ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
+ System.setProperty("svnkit.ssh2.key", privateKeyFilePath);
+ System.setProperty("svnkit.ssh2.username", username);
+ if (passphrase != null && passphrase.length > 0) {
+ System.setProperty("svnkit.ssh2.passphrase", Arrays.toString(passphrase));
+ }
+ //System.setProperty("svnkit.ssh2.passphrase", "");
+ //System.setProperty("svnkit.ssh2.password", "");
+ //System.setProperty("svnkit.ssh2.port", "22");
+
+ // instanciate svn client manager
+ SVNClientManager manager = SVNClientManager.newInstance(options);
+ repository = manager.createRepository(testRepositoryURL, false);
+ repository.testConnection();
+ return repository;
+ } catch (SVNException e) {
+ throw new VCSException(e);
+ }
+ }
+
+ /**
+ * TODO This method is specifi to IsisFish, must be removed from here.
+ * TODO Implement a IsisSVNProvider ?
+ *
+ * @param typeRepo the type of repo we want to use if possible
+ * @param uncleanRemotePath remote path (could be unclean)
+ * @param databaseVersion the database version to use
+ * @param hostName the hostname to use
+ * @return the typeRepo to use
+ * @throws org.codelutin.vcs.VCSException if could not compute SVNURL to tests
+ */
+ public static VCSTypeRepo findTypeRepo(VCSTypeRepo typeRepo,
+ String uncleanRemotePath,
+ String databaseVersion,
+ String hostName) throws VCSException {
+
+
+ VCSTypeRepo result;
+
+ String remotePath = AbstractVCSHandler.getRemotePath(typeRepo, uncleanRemotePath);
+ String remoteDatabase = AbstractVCSHandler.getRemoteDatabase(typeRepo, databaseVersion);
+ StringBuilder sb = new StringBuilder("svn://").append(hostName);
+ sb.append("/").append(remotePath);
+ String url = sb.toString();
+ log.info("try svn url " + url + " (" + remoteDatabase + ")");
+
+ SVNRepository repository;
+ try {
+ repository = getAnonymousConnection(url);
+ } catch (VCSException e) {
+ log.warn(e);
+ return null;
+ }
+
+ try {
+ SVNNodeKind kind = repository.checkPath(remoteDatabase, SVNRevision.HEAD.getNumber());
+ log.info("kind node found for " + remoteDatabase + " : " + kind);
+ // typeRepo type is ok, use it
+ if (kind == SVNNodeKind.NONE) {
+ // could not found the remote database
+ if (typeRepo == VCSTypeRepo.HEAD) {
+ // this is a fatal error since head always exists
+ throw new VCSRuntimeException("could not found svn trunk " + url + " (" + repository.getLocation() + ")");
+ } else {
+ result = VCSTypeRepo.HEAD;
+ }
+ } else {
+ // was found, so keep it
+ result = typeRepo;
+ }
+ } catch (SVNException e) {
+ throw new VCSRuntimeException(e);
+ }
+ log.info("required:" + typeRepo + " available:" + result);
+ return result;
+ }
+
+ static void setupLibrary() {
+ if (libraryInit) {
+ return;
+ }
+ libraryInit = true;
+ /*
+ * For using over http:// and https://
+ */
+ DAVRepositoryFactory.setup();
+
+ /*
+ * For using over svn:// and svn+xxx://
+ */
+ SVNRepositoryFactoryImpl.setup();
+
+ /*
+ * For using over file:///
+ */
+ FSRepositoryFactory.setup();
+ }
+}
Modified: trunk/lutinvcs/provider/svn/src/main/resources/META-INF/services/org.codelutin.vcs.VCSProvider
===================================================================
--- trunk/lutinvcs/provider/svn/src/main/resources/META-INF/services/org.codelutin.vcs.VCSProvider 2008-04-13 15:58:23 UTC (rev 509)
+++ trunk/lutinvcs/provider/svn/src/main/resources/META-INF/services/org.codelutin.vcs.VCSProvider 2008-04-13 15:59:12 UTC (rev 510)
@@ -1 +1 @@
-org.codelutin.vcs.SVNProvider
\ No newline at end of file
+org.codelutin.vcs.provider.SVNProvider
\ No newline at end of file
Modified: trunk/lutinvcs/provider/svn/src/test/java/org/codelutin/vcs/provider/svn/FindTypeRepoTest.java
===================================================================
--- trunk/lutinvcs/provider/svn/src/test/java/org/codelutin/vcs/provider/svn/FindTypeRepoTest.java 2008-04-13 15:58:23 UTC (rev 509)
+++ trunk/lutinvcs/provider/svn/src/test/java/org/codelutin/vcs/provider/svn/FindTypeRepoTest.java 2008-04-13 15:59:12 UTC (rev 510)
@@ -2,7 +2,7 @@
import junit.framework.TestCase;
import org.codelutin.vcs.VCSException;
-import org.codelutin.vcs.SVNProvider;
+import org.codelutin.vcs.provider.SVNProvider;
import org.codelutin.vcs.type.VCSTypeRepo;
/**
1
0