[EGIT PATCH 00/31] Push GUI, GUI improvements, various jgit stuff
- From
- Marek Zawirski <marek.zawirski@gmail.com>
- Date
- Aug 17, 2008, 20:43 UTC
- Message-ID
- <1219005852-21496-1-git-send-email-marek.zawirski@gmail.com>
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