gui/PPBrowser.st
author Claus Gittinger <cg@exept.de>
Sun, 22 Jul 2018 22:41:13 +0200
changeset 633 4be0b0537d80
parent 327 6f40d57a93c4
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
327
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/gui' }"
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
GLMCompositePresentation subclass:#PPBrowser
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'PetitGui-Core'
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!PPBrowser class methodsFor:'instance creation'!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
open 
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self openOn: PPCompositeParser
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
openOn: aClass
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	"Less glamorous versions of Glamour do not work with the new browser, fall back to the old one in this case."
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	(self superclass canUnderstand: #compose)
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		ifFalse: [ ^ PPDrabBrowser new openOn: aClass ].
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	^ self new openOn: aClass
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
! !
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!PPBrowser class methodsFor:'accessing'!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
icon
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	^ (Form
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	extent: 16@16
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	depth: 32
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	fromArray: #( 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 1069534679 2139069360 2139069360 2139069360 2139069360 1551866800 1199545264 1451203504 2139069360 2139069360 2139069360 2139069360 2139069360 260021168 8362928 16777215 2139069360 14177 67123041 620771169 1224750945 1845507937 3372234593 3087021921 4278204257 4278204257 4278204257 4278204257 4278204257 3405789025 452999009 16777215 2139069360 14177 117454689 704657249 1325414241 1728067425 2197829473 3288348513 4278204257 4278204257 3758110561 3691001697 4278204257 4278204257 654325601 16777215 2139069360 14177 201340769 822097761 1409300321 1543518049 1811953505 3523229537 4278204257 4278204257 2231383905 3019913057 4278204257 4278204257 620771169 16777215 2139069360 14177 318781281 939538273 1509963617 1862285153 2717923169 3573561185 4278204257 4278204257 3238016865 3640670049 4278204257 4060100449 452999009 16777215 2139069360 1593849697 1862285153 2248161121 2281715553 2751477601 3003135841 3825219425 4278204257 4278204257 4278204257 4278204257 4278204257 1476409185 100677473 16777215 2139069360 33568609 536885089 1157642081 1644181345 1946171233 2214606689 4278204257 4278204257 3389011809 2281715553 2130720609 268449633 16791393 14177 16777215 2139069360 83900257 637548385 1258305377 1543518049 1543518049 1543518049 4278204257 4278204257 2466264929 201340769 14177 14177 14177 14177 16777215 2139069360 151009121 754988897 1375745889 1543518049 1543518049 1543518049 4278204257 4278204257 2298492769 125803440 16777215 16777215 16777215 16777215 16777215 2139069360 234895201 872429409 1426077537 1543518049 1543518049 2902472545 4278204257 4278204257 603993953 75471792 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215)
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	offset: 0@0)
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
label
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	^ 'PetitParser'
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
! !
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!PPBrowser class methodsFor:'private'!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
menuCommandOn: aBuilder
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	<worldMenu>
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	(aBuilder item: self label)
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
		parent: #Tools;
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
		icon: self icon;
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
		action: [ self open ]
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
! !
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!PPBrowser methodsFor:'building'!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
compose
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	"self open"
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	self title: self defaultTitle.
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	self tabulator with: [ :tabulator | 
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		tabulator 
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
			column: #classes;
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
			column: #parser span: 3.
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
		tabulator transmit to: #classes; andShow: [:a | 
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
			self classesIn: a ]. 
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
		tabulator transmit to: #parser; from: #classes; andShow: [:a | 
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
			a custom: PPParserBrowser new noTitle ]
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	]
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
defaultTitle
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	^ 'PetitParser Browser'
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
! !
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
!PPBrowser methodsFor:'private building'!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
addNewSubParserOf: class in: list
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
	| refactoring className |
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
	className := UIManager default request: 'Parser class name' initialAnswer: '' title: 'Add new parser'.
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	^ className
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
		ifNotNil: [ 
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
			refactoring := PPAddParserRefactoring name: className asSymbol category: #ParserExample superclass: class.
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
			PPRefactoringUtils new performRefactoring: refactoring.
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
			list update ]
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
classesIn: composite
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	composite tree
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
		title: 'Parsers';
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
		format: [ :class | class name ];
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		children: [ :class | class subclasses asSortedCollection: [ :a :b | a name < b name ] ];
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
		display: [ :class | class subclasses asSortedCollection: [ :a :b | a name < b name ] ];
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
		selectionAct: [ :list :class | Smalltalk tools browser fullOnClass: list selection ] on: $b entitled: 'Browse (b)';
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
		selectionAct: [ :list :class | self addNewSubParserOf: list selection in: list ]
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
			entitled: 'Add new sub parser';
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
		act: [ :list :class | self addNewSubParserOf: class in: list ]
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
			icon: GLMUIThemeExtraIcons glamorousAdd
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
			on: $+
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
			entitled: 'Add new parser'
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
! !
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
!PPBrowser class methodsFor:'documentation'!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
version
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/gui/PPBrowser.st,v 1.1 2014-03-04 21:14:07 cg Exp $'
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
version_CVS
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/gui/PPBrowser.st,v 1.1 2014-03-04 21:14:07 cg Exp $'
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
! !
6f40d57a93c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106