mercurial/HGChangesetDialog.st
author Claus Gittinger <cg@exept.de>
Wed, 29 Aug 2018 12:46:21 +0200
branchcvs_MAIN
changeset 856 4d897e8ab998
parent 630 968d7221e5f7
permissions -rw-r--r--
#REFACTORING by cg class: HGRevisionAnnotation removed: #annotatesClass: #annotatesMethod:

"
stx:libscm - a new source code management library for Smalltalk/X
Copyright (C) 2012-2015 Jan Vrany

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License. 

This library 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
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
"
"{ Package: 'stx:libscm/mercurial' }"

"{ NameSpace: Smalltalk }"

SimpleDialog subclass:#HGChangesetDialog
	instanceVariableNames:'repositoryHolder revsetHolder changesetHolder showDetailsHolder
		acceptEnabledHolder'
	classVariableNames:''
	poolDictionaries:''
	category:'SCM-Mercurial-StX-Interface'
!

!HGChangesetDialog class methodsFor:'documentation'!

copyright
"
stx:libscm - a new source code management library for Smalltalk/X
Copyright (C) 2012-2015 Jan Vrany

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License. 

This library 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
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
"
!

documentation
"
    Dialog to ask user for a mercurial revision.

    [author:]
        Jan Vrany <jan.vrany@fit.cvut.cz>

    [instance variables:]

    [class variables:]

    [see also:]

"
!

examples
"
    Asking for a changeset
                                                                [exBegin]
    | repo revset dialog changeset |
    repo :=  (HGRepository on: stx_libscm_mercurial packageDirectory / '..' ).
    revset := 'branch(''default'') and merge()' asHGRevset.
    dialog := HGChangesetDialog new.
    dialog repository: repo.
    dialog revset: revset.
    changeset := dialog open

                                                                [exEnd]

                                                                [exEnd]
"
! !

!HGChangesetDialog class methodsFor:'interface specs'!

windowSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:HGChangesetDialog andSelector:#windowSpec
     HGChangesetDialog new openInterface:#windowSpec
     HGChangesetDialog open
    "

    <resource: #canvas>

    ^ 
    #(FullSpec
       name: windowSpec
       window: 
      (WindowSpec
         label: 'Select revision...'
         name: 'Select revision...'
         min: (Point 10 10)
         bounds: (Rectangle 0 0 541 487)
       )
       component: 
      (SpecCollection
         collection: (
          (ViewSpec
             name: 'Contents'
             layout: (LayoutFrame 0 0 0 0 0 1 -45 1)
             component: 
            (SpecCollection
               collection: (
                (SubCanvasSpec
                   name: 'SubCanvas1'
                   layout: (LayoutFrame 0 0 0 0 0 1 -20 1)
                   hasHorizontalScrollBar: false
                   hasVerticalScrollBar: false
                   majorKey: HGChangesetBrowser
                   minorKey: listAndDetailsSpec
                   subAspectHolders: 
                  (Array
                     
                    (SubChannelInfoSpec
                       subAspect: changesetHolder
                       aspect: changesetHolder
                     ) 
                    (SubChannelInfoSpec
                       subAspect: repositoryHolder
                       aspect: repositoryHolder
                     )
                     
                    (SubChannelInfoSpec
                       subAspect: revsetHolder
                       aspect: revsetHolder
                     ) 
                    (SubChannelInfoSpec
                       subAspect: showDetailsHolder
                       aspect: showDetailsHolder
                     )
                   )
                   createNewApplication: true
                   createNewBuilder: true
                 )
                (CheckBoxSpec
                   label: 'Show details'
                   name: 'CheckBox1'
                   layout: (LayoutFrame 0 0 -20 1 0 1 0 1)
                   model: showDetailsHolder
                 )
                )
              
             )
           )
          (DividerSpec
             name: 'Separator'
             layout: (LayoutFrame 0 0 -45 1 0 1 -40 1)
           )
          (HorizontalPanelViewSpec
             name: 'BittonPanel'
             layout: (LayoutFrame 9 0 -40 1 -9 1 0 1)
             horizontalLayout: right
             verticalLayout: center
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (ActionButtonSpec
                   label: 'Cancel'
                   name: 'CancelButton'
                   translateLabel: true
                   model: doCancel
                   extent: (Point 125 22)
                 )
                (ActionButtonSpec
                   label: 'OK'
                   name: 'OKButton'
                   translateLabel: true
                   model: doAccept
                   enableChannel: acceptEnabledHolder
                   extent: (Point 125 22)
                 )
                )
              
             )
           )
          )
        
       )
     )
! !

!HGChangesetDialog methodsFor:'accessing'!

changeset
    ^ self changesetHolder value

    "Created: / 24-03-2014 / 11:05:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

repository
    ^ self repositoryHolder value

    "Created: / 11-03-2014 / 20:54:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

repository: anHGRepository
    self repositoryHolder value: anHGRepository

    "Created: / 11-03-2014 / 20:54:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

revset
    ^ self revsetHolder value

    "Created: / 11-03-2014 / 20:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

revset: anHGRevset
    ^ self revsetHolder value: anHGRevset

    "Created: / 11-03-2014 / 20:55:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGChangesetDialog methodsFor:'aspects'!

acceptEnabledHolder
    <resource: #uiAspect>

    acceptEnabledHolder isNil ifTrue:[
        acceptEnabledHolder := false asValue.
    ].
    ^ acceptEnabledHolder.

    "Modified: / 24-03-2014 / 11:12:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

changesetHolder
    "return/create the 'changesetHolder' value holder (automatically generated)"

    changesetHolder isNil ifTrue:[
        changesetHolder := ValueHolder new.
        changesetHolder addDependent:self.
    ].
    ^ changesetHolder
!

repositoryHolder
    "return/create the 'repositoryHolder' value holder (automatically generated)"

    repositoryHolder isNil ifTrue:[
        repositoryHolder := ValueHolder new.
    ].
    ^ repositoryHolder

    "Modified: / 24-03-2014 / 11:03:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

revsetHolder
    "return/create the 'revsetHolder' value holder (automatically generated)"

    revsetHolder isNil ifTrue:[
        revsetHolder := ValueHolder new.
    ].
    ^ revsetHolder

    "Modified: / 24-03-2014 / 11:03:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

showDetailsHolder
    "return/create the 'showDetailsHolder' value holder (automatically generated)"

    showDetailsHolder isNil ifTrue:[
        showDetailsHolder := ValueHolder with: false.
        showDetailsHolder addDependent:self.
    ].
    ^ showDetailsHolder

    "Modified: / 24-03-2014 / 11:03:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGChangesetDialog methodsFor:'change & update'!

update:something with:aParameter from:changedObject
    "Invoked when an object that I depend upon sends a change notification."

    "stub code automatically generated - please change as required"

    changedObject == changesetHolder ifTrue:[
         self updateAcceptEnabledHolder.
         ^ self.
    ].
    super update:something with:aParameter from:changedObject

    "Modified: / 24-03-2014 / 11:10:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

updateAcceptEnabledHolder

    self acceptEnabledHolder value: self changeset notNil

    "Created: / 24-03-2014 / 11:12:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGChangesetDialog methodsFor:'forced actions'!

doAcceptByReturnKey
    "Do not accept when Return is pressed in revset editor"

    (self windowGroup focusView application isKindOf: HGRevsetEditor) ifTrue:[ ^ self ].
    self acceptEnabledHolder value ifFalse:[ ^ self ].
    super doAcceptByReturnKey

    "Created: / 24-03-2014 / 21:35:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGChangesetDialog class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !