1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 from muntjac.ui.check_box import CheckBox
16
17 from muntjac.api \
18 import Application, Window, GridLayout, Select, Button
19
20 from muntjac.data.property \
21 import IValueChangeListener
22
23 from muntjac.ui.button \
24 import IClickListener
25
26 from muntjac.addon.codemirror.client.code_mode \
27 import CodeMode
28
29 from muntjac.addon.codemirror.client.code_theme \
30 import CodeTheme
31
32 from muntjac.addon.codemirror.code_mirror \
33 import CodeMirror
34
35
37
38 _NL = '\n\n'
39
40 _SAMPLE_CODE = ('<xml is="fun"></xml>' + _NL
41 + 'function js(isMoreFun) {alert("Yay!");}' + _NL
42 + 'public void java(String isAlsoCool) {\n\twith("Vaadin!");\n}'
43 + _NL + 'def python(isCooler): print "with Muntjac!"'
44 + _NL + 'select * from web where you = i;')
45
47 mainWindow = Window('CodeMirror Sample Application')
48
49 hl = GridLayout(2, 5)
50 hl.setSpacing(True)
51 mainWindow.addComponent(hl)
52
53
54 code = CodeMirror('Your Code', CodeMode.TEXT)
55 code.setValue(self._SAMPLE_CODE)
56 code.setWidth('500px')
57 code.setHeight('350px')
58 hl.addComponent(code)
59
60
61 code2 = CodeMirror('Your Code Too', CodeMode.PYTHON)
62 code2.setValue(self._SAMPLE_CODE)
63
64
65 hl.addComponent(code2)
66
67
68 codeMode = Select('Select your mode')
69 for cs in CodeMode.values():
70 codeMode.addItem(cs)
71 codeMode.setNewItemsAllowed(False)
72 codeMode.setNullSelectionAllowed(False)
73 codeMode.setImmediate(True)
74 hl.addComponent(codeMode)
75
76 l = CodeModeChangeListener(code, codeMode)
77 codeMode.addListener(l, IValueChangeListener)
78 codeMode.setValue(CodeMode.TEXT)
79
80 codeMode = Select('Select your mode too')
81 for cs in CodeMode.values():
82 codeMode.addItem(cs)
83 codeMode.setNewItemsAllowed(False)
84 codeMode.setNullSelectionAllowed(False)
85 codeMode.setImmediate(True)
86 hl.addComponent(codeMode)
87
88 l = CodeModeChangeListener(code2, codeMode)
89 codeMode.addListener(l, IValueChangeListener)
90 codeMode.setValue(CodeMode.PYTHON)
91
92
93 codeTheme = Select('Select your theme')
94 for ct in CodeTheme.values():
95 codeTheme.addItem(ct)
96 codeTheme.setNewItemsAllowed(False)
97 codeTheme.setImmediate(True)
98 hl.addComponent(codeTheme)
99
100 l = CodeThemeChangeListener(code, codeTheme)
101 codeTheme.addListener(l, IValueChangeListener)
102 codeTheme.setValue(CodeTheme.DEFAULT)
103
104 codeTheme = Select('Select your theme too')
105 for ct in CodeTheme.values():
106 codeTheme.addItem(ct)
107 codeTheme.setNewItemsAllowed(False)
108 codeTheme.setImmediate(True)
109 hl.addComponent(codeTheme)
110
111 l = CodeThemeChangeListener(code2, codeTheme)
112 codeTheme.addListener(l, IValueChangeListener)
113 codeTheme.setValue(CodeTheme.ECLIPSE)
114
115
116 l = CopyClickListener(code, code2)
117 hl.addComponent(Button('copy to -->', l))
118
119 l = CopyClickListener(code2, code)
120 hl.addComponent(Button('<- copy to', l))
121
122
123 l = ShowLineNumbersListener(code)
124 cb = CheckBox("Show line numbers", l)
125 cb.setImmediate(True)
126 hl.addComponent(cb)
127
128 l = ShowLineNumbersListener(code2)
129 cb = CheckBox("Show line numbers", l)
130 cb.setImmediate(True)
131 hl.addComponent(cb)
132
133
134 self.setMainWindow(mainWindow)
135
136
138
140 self._code = code
141 self._codeMode = codeMode
142
145
146
148
150 self._code1 = code1
151 self._code2 = code2
152
155
156
158
160 self._code = code
161 self._codeTheme = codeTheme
162
165
166
174
175
176 if __name__ == '__main__':
177 from muntjac.main import muntjac
178 muntjac(CodeMirrorApplication, nogui=True, forever=True, debug=True)
179