CustomBrowserContext.st
author Jakub Nesveda <jakubnesveda@seznam.cz>
Tue, 28 Oct 2014 09:39:46 +0100
changeset 711 605ab7fc9cd1
parent 685 bc7798e413f6
child 715 0e3c501b6015
permissions -rw-r--r--
return whole source code when selected interval is empty retrieve selector from method when none selector is specified

"{ Package: 'jn:refactoring_custom' }"

CustomContext subclass:#CustomBrowserContext
	instanceVariableNames:'perspective state'
	classVariableNames:''
	poolDictionaries:''
	category:'Interface-Refactoring-Custom'
!


!CustomBrowserContext class methodsFor:'instance creation'!

perspective: perspective state: state
    ^ self new perspective: perspective state: state

    "Created: / 26-01-2014 / 11:00:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!CustomBrowserContext methodsFor:'accessing'!

perspective
    ^ perspective
!

perspective:perspectiveArg state:stateArg 
    perspective := perspectiveArg.
    state := stateArg.

    "Created: / 26-01-2014 / 11:00:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!CustomBrowserContext methodsFor:'accessing-selection'!

selectedClassCategories

    ^ state selectedCategories value

    "Modified: / 05-08-2014 / 21:35:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!

selectedClasses
    "Returns a set of classes currently selected in
     the browser"

    ^ state selectedClasses value

    "Created: / 26-01-2014 / 22:06:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 26-01-2014 / 23:39:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

selectedCodes
    | codeSelection currentMethod codeView |

    currentMethod := state theSingleSelectedMethod.
    codeView := state codeView.

    (codeView isNil or: [ currentMethod isNil ]) ifTrue: [ 
        ^ nil
    ].

    codeSelection := CustomSourceCodeSelection new.
    codeSelection
        selectedInterval: codeView selectedInterval;
        currentSourceCode: codeView contentsAsString; 
        selectedMethod: currentMethod; 
        selectedClass: currentMethod mclass;
        selectedSelector: currentMethod selector.
        

    ^ Array with: codeSelection

    "Created: / 18-08-2014 / 21:34:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
    "Modified: / 18-08-2014 / 23:51:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!

selectedMethodProtocols

    ^ state selectedProtocols value

    "Modified: / 05-08-2014 / 21:34:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!

selectedMethods

    ^ state selectedMethods value

    "Modified: / 05-08-2014 / 21:31:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!

selectedPackages

    ^ state packageFilter value

    "Modified: / 05-08-2014 / 21:38:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!

selectedVariables

    ^ state variableFilter value

    "Modified: / 17-05-2014 / 13:29:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !

!CustomBrowserContext methodsFor:'enumerating'!

codeGeneratorsAndRefactoringDo:aBlock 
    "Evaluate a block on each generator and refactoring class available in my
     perspective.
     NOTE: the block gets class, not an instance of generator/refactoring"
    
    CustomManager current generatorsAndRefactoringsForPerspective:perspective
        do:aBlock

    "Created: / 26-01-2014 / 13:39:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!CustomBrowserContext methodsFor:'testing'!

isInteractiveContext
    "Return true, if this generator/refactoring context is interactive,
     i.e., if it may interact with user (like asking for class name or
     similar) or not. 

     Generally speaking, only top-level context is interactive an only
     if generator/refactoring was triggerred from menu.
    "
    ^ true

    "Created: / 16-09-2014 / 09:23:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!CustomBrowserContext class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !