That's the final series for one of my core tasks for GSoC: GUI related stuff. Little late, but it required lot of polishing. Traditionally, it's also available at http://repo.or.cz/w/egit/zawir.git?a=shortlog;h=refs/heads/push But wait... this time it was pushed from Eclipse! ;) The series consists of few parts: 1) Various small fixes and improvements to jgit. 2) Lot of refactor, fixes, improvements in Git Clone Wizard. 3) Push GUI with some general purpose components. (more in commit messages) Fetch GUI is not implemented yet, although with this Eclipse-experience and new stuff available in .components, I suspect it we'll be *much* much easier to do it than this push GUI, so I may try to do it as well, especially if you enjoy this one. I'm just starting working on that. Changes in plugin were tested on Eclipse 3.4 at Linux, Windows XP and partially at MacOS 10.4 (there are some issues that makes it looking worse there, one very annoying bug is reported to Eclipse' bugzilla). I'm now using mostly Eclipse 3.4, but I've tried to use up to 3.3 API. Shawn also tried this code at Eclipse 3.3 on OS X 10.5, at least up to some stage. Comments regarding this GUI are welcome, I hope that yet another mind can bring some ideas. Recently (few days ago), Shawn brought some great idea of making Eclipse view for results of operations on remote (fetch, push) instead of dialog. That would be cool, although unfortunatelly it was too late for me to do it - to change project at this stage. I've got some problem with icons right now, as I'm pretty far from stating that I'm good at doing that sort of art. Robin, Tor, I know that you were already contributing some graphics to egit. If someone of you would like to do some icon for push/fetch with pleasure, you are welcome. Otherwise I'll have to do some crappy icon instead ;) Another matter are checkboxes screenshots. I'm not sure about legality status of including them. Any ideas if/how we co use them or some another set that we can for sure? Although that's last big portion of code during this GSoC from me, I may send some smaller things in next 2 days or fix this stuff if needed. Have fun with push;> Marek / zawir Marek Zawirski (31): Fix Repository.mapObject() for missing objects Fix Repository isValidRefName() for empty names Fix Repository.resolve() to not throw runtime exceptions Document/fix Transport open method for specific case Fix RefSpec javadoc regarding spec expanding Make wildcard checking public in RefSpec Add openAll() and applyConfig() methods to Transport Add dryRun option to Transport and console push Extract Transport findRemoteRefUpdatesFor() as static method Improve javadoc of Transport push() Clean up exception issues in RemoteRefUpdate Add another RemoteRefUpdate constructor, useful for 2-stage push Add getAllRemoteConfigs() to RemoteConfig Add setFetchRefSpecs and setPushRefSpecs to RemoteConfig Add simple abbreviate() method to ObjectId Remove debug/test console output from GitIndex Fix typo in uitext.properties message Refactor/rewrite CloneSourcePage to universal RepositorySelectionPage Clone wizard and related: refactor, clean-up, fixes or improvements Move clone logic away from GitCloneWizard to CloneOperation Add canCreateSubdir() heuristic in CloneDestinationPage Set FileDialog selection appropriately in clone wizard Allow selecting empty dir in clone wizard Clone wizard: force dir to suggested path only if repo selection change Create ListRemoteOperation for listing remote repo branches Make Clone's SourceBranchPage more user-friendly Add few EPL Eclipse icons Checkbox images/screenshots Universal GUI for specifications edition: RefSpecPanel and related Add PushOperation to plugin Push GUI .../src/org/spearce/egit/core/CoreText.java | 18 + .../src/org/spearce/egit/core/coretext.properties | 8 + .../org/spearce/egit/core/op/CloneOperation.java | 129 ++- .../spearce/egit/core/op/ListRemoteOperation.java | 104 ++ .../org/spearce/egit/core/op/PushOperation.java | 148 ++ .../spearce/egit/core/op/PushOperationResult.java | 273 +++ .../egit/core/op/PushOperationSpecification.java | 82 + .../icons/checkboxes/disabled_checked.gif | Bin 0 -> 166 bytes .../icons/checkboxes/disabled_unchecked.gif | Bin 0 -> 125 bytes .../icons/checkboxes/enabled_checked.gif | Bin 0 -> 166 bytes .../icons/checkboxes/enabled_unchecked.gif | Bin 0 -> 157 bytes org.spearce.egit.ui/icons/elcl16/add.gif | Bin 0 -> 318 bytes org.spearce.egit.ui/icons/elcl16/clear.gif | Bin 0 -> 595 bytes org.spearce.egit.ui/icons/elcl16/delete.gif | Bin 0 -> 351 bytes org.spearce.egit.ui/icons/elcl16/trash.gif | Bin 0 -> 590 bytes org.spearce.egit.ui/plugin.properties | 3 + org.spearce.egit.ui/plugin.xml | 15 + .../src/org/spearce/egit/ui/UIIcons.java | 25 + .../src/org/spearce/egit/ui/UIText.java | 398 ++++- .../egit/ui/internal/actions/PushAction.java | 47 + .../ui/internal/clone/BranchChangeListener.java | 13 - .../ui/internal/clone/CloneDestinationPage.java | 165 ++- .../egit/ui/internal/clone/CloneSourcePage.java | 460 ----- .../egit/ui/internal/clone/GitCloneWizard.java | 92 +- .../egit/ui/internal/clone/SourceBranchPage.java | 327 ++-- .../ui/internal/components/BaseWizardPage.java | 58 + .../components/CenteredImageLabelProvider.java | 52 + .../internal/components/CheckboxLabelProvider.java | 138 ++ .../internal/components/ClickableCellEditor.java | 68 + .../internal/components/ComboLabelingSupport.java | 77 + .../ui/internal/components/RefContentProposal.java | 140 ++ .../egit/ui/internal/components/RefSpecPage.java | 237 +++ .../egit/ui/internal/components/RefSpecPanel.java | 1823 ++++++++++++++++++++ .../internal/components/RepositorySelection.java | 133 ++ .../components/RepositorySelectionPage.java | 663 +++++++ .../SelectionChangeListener.java} | 19 +- .../egit/ui/internal/push/ConfirmationPage.java | 211 +++ .../egit/ui/internal/push/PushResultTable.java | 327 ++++ .../spearce/egit/ui/internal/push/PushWizard.java | 250 +++ .../ui/internal/push/RefUpdateContentProvider.java | 62 + .../egit/ui/internal/push/RefUpdateElement.java | 67 + .../egit/ui/internal/push/ResultDialog.java | 65 + .../src/org/spearce/egit/ui/uitext.properties | 163 ++- .../src/org/spearce/jgit/pgm/Fetch.java | 10 +- .../src/org/spearce/jgit/pgm/Push.java | 55 +- .../src/org/spearce/jgit/pgm/TextBuiltin.java | 4 - .../src/org/spearce/jgit/lib/AnyObjectId.java | 15 + .../src/org/spearce/jgit/lib/GitIndex.java | 3 - .../src/org/spearce/jgit/lib/Repository.java | 64 +- .../src/org/spearce/jgit/lib/RepositoryConfig.java | 21 + .../org/spearce/jgit/transport/PushProcess.java | 18 +- .../src/org/spearce/jgit/transport/RefSpec.java | 29 +- .../org/spearce/jgit/transport/RemoteConfig.java | 50 + .../spearce/jgit/transport/RemoteRefUpdate.java | 40 +- .../src/org/spearce/jgit/transport/Transport.java | 283 +++- 55 files changed, 6471 insertions(+), 981 deletions(-) create mode 100644 org.spearce.egit.core/src/org/spearce/egit/core/op/ListRemoteOperation.java create mode 100644 org.spearce.egit.core/src/org/spearce/egit/core/op/PushOperation.java create mode 100644 org.spearce.egit.core/src/org/spearce/egit/core/op/PushOperationResult.java create mode 100644 org.spearce.egit.core/src/org/spearce/egit/core/op/PushOperationSpecification.java create mode 100644 org.spearce.egit.ui/icons/checkboxes/disabled_checked.gif create mode 100644 org.spearce.egit.ui/icons/checkboxes/disabled_unchecked.gif create mode 100644 org.spearce.egit.ui/icons/checkboxes/enabled_checked.gif create mode 100644 org.spearce.egit.ui/icons/checkboxes/enabled_unchecked.gif create mode 100644 org.spearce.egit.ui/icons/elcl16/add.gif create mode 100644 org.spearce.egit.ui/icons/elcl16/clear.gif create mode 100644 org.spearce.egit.ui/icons/elcl16/delete.gif create mode 100644 org.spearce.egit.ui/icons/elcl16/trash.gif create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/PushAction.java delete mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/BranchChangeListener.java delete mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneSourcePage.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/BaseWizardPage.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/CenteredImageLabelProvider.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/CheckboxLabelProvider.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/ClickableCellEditor.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/ComboLabelingSupport.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RefContentProposal.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RefSpecPage.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RefSpecPanel.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelection.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java rename org.spearce.egit.ui/src/org/spearce/egit/ui/internal/{clone/URIishChangeListener.java => components/SelectionChangeListener.java} (51%) create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/push/ConfirmationPage.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/push/PushResultTable.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/push/PushWizard.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/push/RefUpdateContentProvider.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/push/RefUpdateElement.java create mode 100644 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/push/ResultDialog.java -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html