refactoring_custom/stx_goodies_smallsense_refactoring_custom.st
author Jan Vrany <jan.vrany@labware.com>
Thu, 01 Jun 2023 20:20:33 +0100
changeset 1149 33f8a8571e92
parent 1139 26a41cfc8460
permissions -rw-r--r--
Fix class selection drop-in dialog Commit 93164087c56a added class selection dialog to SmallSense's `DialogBox`. This commit selever bugs in the implementation.

"
A custom code generation and refactoring support for Smalltalk/X
Copyright (C) 2013-2015 Jakub Nesveda
Copyright (C) 2015 Jan Vrany
Copyright (C) 2021 LabWare

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:goodies/smallsense/refactoring_custom' }"

"{ NameSpace: Smalltalk }"

LibraryDefinition subclass:#stx_goodies_smallsense_refactoring_custom
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'* Projects & Packages *'
!

!stx_goodies_smallsense_refactoring_custom class methodsFor:'documentation'!

copyright
"
A custom code generation and refactoring support for Smalltalk/X
Copyright (C) 2013-2015 Jakub Nesveda
Copyright (C) 2015 Jan Vrany
Copyright (C) 2021 LabWare

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
"
    Package documentation:

    API for custom code generation and refactoring.

    [author:]
        Jakub Nesveda <nesvejak@fit.cvut.cz>
"
! !

!stx_goodies_smallsense_refactoring_custom class methodsFor:'description'!

excludedFromPreRequisites
    "list all packages which should be ignored in the automatic
     preRequisites scan. See #preRequisites for more."

    ^ #(
    )
!

mandatoryPreRequisites
    "list packages which are mandatory as a prerequisite.
     This are packages containing superclasses of my classes and classes which
     are extended by myself.
     They are mandatory, because we need these packages as a prerequisite for loading and compiling.
     This method is generated automatically,
     by searching along the inheritance chain of all of my classes.
     Please take a look at the #referencedPreRequisites method as well."

    ^ #(
        #'stx:goodies/refactoryBrowser/changes'    "AddClassChange - extended"
        #'stx:goodies/refactoryBrowser/helpers'    "RBAbstractClass - extended"
        #'stx:goodies/refactoryBrowser/parser'    "ParseTreeRewriter - superclass of SmallSense::CustomParseTreeRewriter"
        #'stx:goodies/sunit'    "TestAsserter - superclass of SmallSense::CustomRBMetaclassTests::MockPrivateClass01"
        #'stx:libbasic'    "LibraryDefinition - superclass of stx_goodies_smallsense_refactoring_custom"
        #'stx:libtool'    "SystemBrowser - extended"
        #'stx:libview2'    "ApplicationModel - extended"
    )
!

referencedPreRequisites
    "list packages which are a prerequisite, because they contain
     classes which are referenced by my classes.
     These packages are NOT needed as a prerequisite for compiling or loading,
     however, a class from it may be referenced during execution and having it
     unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
     includes explicit checks for the package being present.
     This method is generated automatically,
     by searching all classes (and their packages) which are referenced by my classes.
     Please also take a look at the #mandatoryPreRequisites method"

    ^ #(
        #'stx:libbasic3'    "Change - referenced by SmallSense::CustomCodeGeneratorOrRefactoringTestCase>>assertSource:sameAs:"
        #'stx:libcomp'    "Parser - referenced by RBMethod>>newSource"
        #'stx:libjava'    "JavaClass - referenced by SmallSense::CustomCodeGeneratorOrRefactoringTests>>test_available_for_programming_languages_in_context_filled_with_class_perspective_java"
        #'stx:libjava/tools'    "JavaCompiler - referenced by SmallSense::CustomJavaSimpleSetterMethodsCodeGenerator>>buildInContext:"
        #'stx:libjavascript'    "JavaScriptCompiler - referenced by SmallSense::CustomJavaScriptSimpleSetterMethodsCodeGeneratorTests>>setUp"
        #'stx:libview'    "WindowGroup - referenced by SmallSense::CustomCodeGeneratorOrRefactoring>>executeInContextWithWaitCursor:"
        #'stx:libwidg'    "DialogBox - referenced by SmallSense::CustomCodeGeneratorOrRefactoringTests>>test_execute_in_context_aborted"
        #'stx:libwidg2'    "CheckBox - referenced by SmallSense::CustomDialog>>addCheckBoxOn:labeled:"
    )
!

subProjects
    "list packages which are known as subprojects.
     The generated makefile will enter those and make there as well.
     However: they are not forced to be loaded when a package is loaded;
     for those, redefine requiredPrerequisites"

    ^ #(
    )

    "Modified: / 19-02-2015 / 06:04:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!stx_goodies_smallsense_refactoring_custom class methodsFor:'description - contents'!

classNamesAndAttributes
    "lists the classes which are to be included in the project.
     Each entry in the list may be: a single class-name (symbol),
     or an array-literal consisting of class name and attributes.
     Attributes are: #autoload or #<os> where os is one of win32, unix,..."

    ^ #(
        "<className> or (<className> attributes...) in load order"
        #'SmallSense::CustomChangeManager'
        #'SmallSense::CustomClassQuery'
        #'SmallSense::CustomCodeGeneratorOrRefactoring'
        #'SmallSense::CustomContext'
        #'SmallSense::CustomDialog'
        #'SmallSense::CustomManager'
        #'SmallSense::CustomMenuBuilder'
        #'SmallSense::CustomMock'
        #'SmallSense::CustomNamespace'
        #'SmallSense::CustomParseTreeRewriter'
        #'SmallSense::CustomPerspective'
        #'SmallSense::CustomRefactoryBuilder'
        #'SmallSense::CustomSourceCodeFormatter'
        #'SmallSense::CustomSourceCodeGenerator'
        #'SmallSense::CustomSourceCodeSelection'
        #'SmallSense::CustomTestCaseHelper'
        #'stx_goodies_smallsense_refactoring_custom'
        #'SmallSense::CustomBrowserChangeManager'
        #'SmallSense::CustomBrowserContext'
        #'SmallSense::CustomCodeGenerator'
        #'SmallSense::CustomLocalChangeManager'
        #'SmallSense::CustomNoneSourceCodeFormatter'
        #'SmallSense::CustomRBLocalSourceCodeFormatter'
        #'SmallSense::CustomRefactoring'
        #'SmallSense::CustomSilentDialog'
        #'SmallSense::CustomSubContext'
        #'SmallSense::CustomUserDialog'
        #'SmallSense::CustomAccessMethodsCodeGenerator'
        #'SmallSense::CustomCodeSelectionRefactoring'
        #'SmallSense::CustomInspectorTabCodeGenerator'
        #'SmallSense::CustomIsAbstractCodeGenerator'
        #'SmallSense::CustomJavaSimpleSetterMethodsCodeGenerator'
        #'SmallSense::CustomNewClassGenerator'
        #'SmallSense::CustomReplaceIfNilWithIfTrueRefactoring'
        #'SmallSense::CustomSubclassResponsibilityCodeGenerator'
        #'SmallSense::CustomTestCaseCodeGenerator'
        #'SmallSense::CustomTestCaseMethodCodeGenerator'
        #'SmallSense::CustomTestCaseSetUpCodeGenerator'
        #'SmallSense::CustomTestCaseTearDownCodeGenerator'
        #'SmallSense::CustomUpdateTestCaseCategoryRefactoring'
        #'SmallSense::CustomVisitorCodeGenerator'
        #'SmallSense::CustomChangeNotificationAccessMethodsCodeGenerator'
        #'SmallSense::CustomChangeNotificationSetterMethodsCodeGenerator'
        #'SmallSense::CustomCodeGeneratorClassGenerator'
        #'SmallSense::CustomCodeGeneratorOrRefactoringTestCaseCodeGenerator'
        #'SmallSense::CustomCodeSelectionToResourceTranslation'
        #'SmallSense::CustomDefaultGetterMethodsCodeGenerator'
        #'SmallSense::CustomLazyInitializationAccessMethodsCodeGenerator'
        #'SmallSense::CustomLazyInitializationGetterMethodsCodeGenerator'
        #'SmallSense::CustomMultiSetterMethodsCodeGenerator'
        #'SmallSense::CustomPrintCodeSelectionRefactoring'
        #'SmallSense::CustomRefactoringClassGenerator'
        #'SmallSense::CustomSimpleAccessMethodsCodeGenerator'
        #'SmallSense::CustomSimpleGetterMethodsCodeGenerator'
        #'SmallSense::CustomSimpleSetterMethodsCodeGenerator'
        #'SmallSense::CustomUITestCaseCodeGenerator'
        #'SmallSense::CustomUITestCaseSetUpCodeGenerator'
        #'SmallSense::CustomValueHolderAccessMethodsCodeGenerator'
        #'SmallSense::CustomValueHolderGetterMethodsCodeGenerator'
        #'SmallSense::CustomValueHolderWithChangeNotificationAccessMethodsCodeGenerator'
        #'SmallSense::CustomValueHolderWithChangeNotificationGetterMethodsCodeGenerator'
        #'SmallSense::CustomValueHolderWithChangeNotificationSetterMethodsCodeGenerator'
        #'SmallSense::CustomVisitorCodeGeneratorAcceptVisitor'
        #'SmallSense::CustomJavaScriptSimpleSetterMethodsCodeGenerator'
        (#'SmallSense::CustomCodeGeneratorOrRefactoringTestCase' autoload)
        (#'SmallSense::CustomAccessMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomAddClassChangeTests' autoload)
        (#'SmallSense::CustomAddMethodChangeTests' autoload)
        (#'SmallSense::CustomBrowserContextTests' autoload)
        (#'SmallSense::CustomBrowserEnvironmentTests' autoload)
        (#'SmallSense::CustomChangeNotificationAccessMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomChangeNotificationSetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomClassQueryTests' autoload)
        (#'SmallSense::CustomCodeGeneratorClassGeneratorTests' autoload)
        (#'SmallSense::CustomCodeGeneratorOrRefactoringTests' autoload)
        (#'SmallSense::CustomCodeGeneratorTests' autoload)
        (#'SmallSense::CustomCodeGeneratorUserPreferencesTests' autoload)
        (#'SmallSense::CustomCodeSelectionToResourceTranslationTests' autoload)
        (#'SmallSense::CustomContextTests' autoload)
        (#'SmallSense::CustomDefaultGetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomIsAbstractCodeGeneratorTests' autoload)
        (#'SmallSense::CustomJavaScriptSimpleSetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomLazyInitializationAccessMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomLazyInitializationGetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomLocalChangeManagerTests' autoload)
        (#'SmallSense::CustomManagerTests' autoload)
        (#'SmallSense::CustomMenuBuilderTests' autoload)
        (#'SmallSense::CustomMockTests' autoload)
        (#'SmallSense::CustomMultiSetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomNamespaceTests' autoload)
        (#'SmallSense::CustomNewClassGeneratorTests' autoload)
        (#'SmallSense::CustomNewSystemBrowserTests' autoload)
        (#'SmallSense::CustomNoneSourceCodeFormatterTests' autoload)
        (#'SmallSense::CustomParseTreeRewriterTests' autoload)
        (#'SmallSense::CustomPerspectiveTests' autoload)
        (#'SmallSense::CustomRBAbstractClassTests' autoload)
        (#'SmallSense::CustomRBClassTests' autoload)
        (#'SmallSense::CustomRBLocalSourceCodeFormatterTests' autoload)
        (#'SmallSense::CustomRBMetaclassTests' autoload)
        (#'SmallSense::CustomRBMethodTests' autoload)
        (#'SmallSense::CustomRefactoringClassGeneratorTests' autoload)
        (#'SmallSense::CustomRefactoryBuilderTests' autoload)
        (#'SmallSense::CustomRefactoryClassChangeTests' autoload)
        (#'SmallSense::CustomReplaceIfNilWithIfTrueRefactoringTests' autoload)
        (#'SmallSense::CustomSimpleAccessMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomSimpleGetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomSimpleSetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomSourceCodeGeneratorTests' autoload)
        (#'SmallSense::CustomSourceCodeSelectionTests' autoload)
        (#'SmallSense::CustomSubContextTests' autoload)
        (#'SmallSense::CustomSubclassResponsibilityCodeGeneratorTests' autoload)
        (#'SmallSense::CustomTestCaseCodeGeneratorTests' autoload)
        (#'SmallSense::CustomTestCaseHelperTests' autoload)
        (#'SmallSense::CustomTestCaseMethodCodeGeneratorTests' autoload)
        (#'SmallSense::CustomTestCaseSetUpCodeGeneratorTests' autoload)
        (#'SmallSense::CustomTestCaseTearDownCodeGeneratorTests' autoload)
        (#'SmallSense::CustomUpdateTestCaseCategoryRefactoringTests' autoload)
        (#'SmallSense::CustomValueHolderAccessMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomValueHolderGetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomValueHolderWithChangeNotificationAccessMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomValueHolderWithChangeNotificationGetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests' autoload)
        (#'SmallSense::CustomVisitorCodeGeneratorAcceptVisitorTests' autoload)
        (#'SmallSense::CustomVisitorCodeGeneratorTests' autoload)
    )
!

extensionMethodNames
    "lists the extension methods which are to be included in the project.
     Entries are 2-element array literals, consisting of class-name and selector.
     A correponding method with real names must be present in my concrete subclasses
     if it has extensions."

    ^ #(
        #'Tools::NewSystemBrowser' selectorMenuExtensionCustomRefactorings:
        #'Tools::NewSystemBrowser' classMenuExtensionCustomGenerators:
        #'Tools::NewSystemBrowser' codeViewMenuExtensionCustomRefactorings:
        #'Tools::NewSystemBrowser' selectorMenuExtensionCustomGenerators:
        #'Tools::NewSystemBrowser' variablesMenuExtensionCustomGenerators:
        RBAbstractClass allClassVarNames
        RBAbstractClass allSuperclassesDo:
        RBAbstractClass instVarNames
        RBAbstractClass methodDictionary
        RBAbstractClass nameWithoutPrefix
        RBAbstractClass superclassName:
        RBAbstractClass theMetaclass
        RBAbstractClass theNonMetaclass
        RBAbstractClass withAllSuperclassesDo:
        RBClass compile
        RBClass theNonMetaClass
        RBMetaclass theMetaClass
        RBMetaclass theMetaclass
        RBAbstractClass instVarNames:
        RBMethod sends:or:
        RBMethod category:
        RBMethod class:
        RBMethod compile
        RBMethod methodArgNames
        RBMethod methodDefinitionTemplate
        RBMethod model
        RBMethod model:
        RBMethod protocol
        RBMethod protocol:
        RBMethod replace:with:
        RBMethod sourceCodeGenerator
        RBMethod sourceCodeGenerator:
        AddClassChange package
        AddClassChange package:
        AddMethodChange package:
        RBAbstractClass compileMethod:
        RBAbstractClass package
        RBAbstractClass package:
        RBMethod newSource
        RBMethod package:
        RBAbstractClass inheritsFrom:
        RBAbstractClass isSubclassOf:
        RBAbstractClass instAndClassMethodsDo:
        RBAbstractClass methodsDo:
        RefactoryChange model
        RefactoryChange model:
        #'Tools::NewSystemBrowser' classMenuExtensionCustomRefactorings:
        AddClassChange argumensBySelectorPartsFromMessage:
        AddClassChange privateInClassName
        AddClassChange privateInClassName:
        RBAbstractClass compilerClass
        RBAbstractClass isLoaded
        RBAbstractClass privateClassesAt:
        RBAbstractClass realSharedPoolNames
        RBAbstractClass topNameSpace
        RBMetaclass owningClass
        RBMetaclass owningClass:
        RBMethod mclass
        RBAbstractClass owningClass
        RBAbstractClass owningClass:
        RBAbstractClass owningClassOrYourself
        RBAbstractClass topOwningClass
        RBMetaclass topOwningClass
        RBAbstractClass isAbstract:
        RBAbstractClass programmingLanguage
        RBMethod programmingLanguage
        #'Tools::NewSystemBrowser' classMenuExtensionNavigateToTestCase:
        #'Tools::NewSystemBrowser' customMenuBuilder
        RBAbstractClass sourceCodeAt:
    )
! !

!stx_goodies_smallsense_refactoring_custom class methodsFor:'description - project information'!

companyName
    "Return a companyname which will appear in <lib>.rc"

    ^ 'My Company'
!

description
    "Return a description string which will appear in vc.def / bc.def"

    ^ 'Class Library'
!

legalCopyright
    "Return a copyright string which will appear in <lib>.rc"

    ^ 'Copyright Jakub Nesveda 2013-2015 & Jan Vrany 2013-now'

    "Modified: / 05-05-2015 / 23:56:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

productName
    "Return a product name which will appear in <lib>.rc"

    ^ 'ProductName'
! !

!stx_goodies_smallsense_refactoring_custom class methodsFor:'documentation'!

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