├── .idea
├── artifacts
│ └── Apktool_GUI_jar.xml
├── compiler.xml
├── description.html
├── encodings.xml
├── gradle.xml
├── libraries
│ └── apktool_cli_all.xml
├── misc.xml
├── modules.xml
├── uiDesigner.xml
├── vcs.xml
└── workspace.xml
├── ApktoolFX.iml
├── README.md
├── img
├── ss1.png
└── ss2.png
├── lib
└── apktool-cli-all.jar
├── out
├── artifacts
│ └── Apktool_GUI_jar
│ │ └── Apktool_GUI.jar
└── production
│ ├── ApktoolFX
│ ├── META-INF
│ │ └── MANIFEST.MF
│ ├── com
│ │ └── bittle
│ │ │ └── apktoolfx
│ │ │ ├── LOGGER.class
│ │ │ ├── Main.class
│ │ │ ├── MainFXML.fxml
│ │ │ ├── controllers
│ │ │ ├── CompileController$1.class
│ │ │ ├── CompileController.class
│ │ │ ├── Controller.class
│ │ │ ├── DecompileController$1.class
│ │ │ └── DecompileController.class
│ │ │ └── fxml
│ │ │ ├── CompileTabPage.fxml
│ │ │ └── DecompileTabPage.fxml
│ └── styles
│ │ ├── MaterialFxTester.fxml
│ │ ├── material.css
│ │ ├── materialfx-toggleswitch.css
│ │ └── materialfx-toggleswitch.fxml
│ └── Apktool_GUI
│ ├── META-INF
│ └── MANIFEST.MF
│ ├── com
│ └── bittle
│ │ └── apktoolfx
│ │ ├── LOGGER.class
│ │ ├── Main.class
│ │ ├── MainFXML.fxml
│ │ ├── controllers
│ │ ├── CompileController$1.class
│ │ ├── CompileController.class
│ │ ├── Controller.class
│ │ ├── DecompileController$1.class
│ │ └── DecompileController.class
│ │ └── fxml
│ │ ├── CompileTabPage.fxml
│ │ └── DecompileTabPage.fxml
│ └── styles
│ ├── MaterialFxTester.fxml
│ ├── material.css
│ ├── materialfx-toggleswitch.css
│ └── materialfx-toggleswitch.fxml
└── src
├── META-INF
└── MANIFEST.MF
├── com
└── bittle
│ └── apktoolfx
│ ├── LOGGER.java
│ ├── Main.java
│ ├── MainFXML.fxml
│ ├── controllers
│ ├── CompileController.java
│ ├── Controller.java
│ └── DecompileController.java
│ └── fxml
│ ├── CompileTabPage.fxml
│ └── DecompileTabPage.fxml
└── styles
└── material.css
/.idea/artifacts/Apktool_GUI_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/out/artifacts/Apktool_GUI_jar
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/.idea/description.html:
--------------------------------------------------------------------------------
1 | Simple JavaFX 2.0 application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided.
2 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/libraries/apktool_cli_all.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
125 |
126 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ApktoolFX.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ApktoolFX
2 | A GUI for Apktool to make reverse engineering of android apps a breeze.
3 |
4 | ApktoolFX is a GUI for [Apktool](https://github.com/iBotPeaches/Apktool) written in JavaFX
5 |
6 | Features:
7 | - Drag and drop
8 | - [Material design](https://bitbucket.org/agix-material-fx/materialfx-material-design-for-javafx)
9 | - Log (with color-coding)
10 |
11 |
12 | Images:
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Jar file can be found [here](/out/artifacts/Apktool_GUI_jar/Apktool_GUI.jar)
21 |
--------------------------------------------------------------------------------
/img/ss1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/img/ss1.png
--------------------------------------------------------------------------------
/img/ss2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/img/ss2.png
--------------------------------------------------------------------------------
/lib/apktool-cli-all.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/lib/apktool-cli-all.jar
--------------------------------------------------------------------------------
/out/artifacts/Apktool_GUI_jar/Apktool_GUI.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/artifacts/Apktool_GUI_jar/Apktool_GUI.jar
--------------------------------------------------------------------------------
/out/production/ApktoolFX/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: com.bittle.apktoolfx.Main
3 |
4 |
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/LOGGER.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/ApktoolFX/com/bittle/apktoolfx/LOGGER.class
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/Main.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/ApktoolFX/com/bittle/apktoolfx/Main.class
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/MainFXML.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/CompileController$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/CompileController$1.class
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/CompileController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/CompileController.class
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/Controller.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/Controller.class
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/DecompileController$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/DecompileController$1.class
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/DecompileController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/ApktoolFX/com/bittle/apktoolfx/controllers/DecompileController.class
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/fxml/CompileTabPage.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/out/production/ApktoolFX/com/bittle/apktoolfx/fxml/DecompileTabPage.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/out/production/ApktoolFX/styles/MaterialFxTester.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
260 |
261 |
262 |
269 |
276 |
281 |
282 |
283 |
288 |
289 |
290 |
295 |
296 |
297 |
298 |
299 |
304 |
309 |
314 |
319 |
320 |
321 |
322 |
323 |
327 |
328 |
329 |
334 |
335 |
336 |
337 |
338 |
342 |
347 |
352 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
--------------------------------------------------------------------------------
/out/production/ApktoolFX/styles/material.css:
--------------------------------------------------------------------------------
1 | /*
2 | * The MIT License (MIT)
3 | *
4 | * Copyright (c) 2015 - AGIX | Innovative Engineering
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the "Software"), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | *
24 | */
25 |
26 | /*
27 | * This is a Material Design CSS for JavaFX
28 | */
29 |
30 | /*******************************************************************************
31 | * *
32 | * Root *
33 | * *
34 | ******************************************************************************/
35 | .root {
36 | /* Swatch Colors - Blue*/
37 | -swatch-100: #BBDEFB;
38 | -swatch-200: #90CAF9;
39 | -swatch-300: #64BEF6;
40 | -swatch-400: #42A5F5;
41 | -swatch-500: #2196F3;
42 | /*default text */
43 | -fx-text-base-color: rgb(100.0, 100.0, 100.0);
44 | -fx-text-button-normal: -swatch-500;
45 | -fx-text-button-colored: rgb(255.0, 255.0, 255.0);
46 | -fx-text-button-text: rgb(100.0, 100.0, 100.0);
47 | -fx-text-title-color: rgb(45.0, 45.0, 45.0);
48 | -fx-text-subtitle-color: rgb(65.0, 65.0, 65.0);
49 | -fx-text-control-title-color: rgb(130.0, 130.0, 130.0);
50 | -fx-text-fill: -fx-text-base-color;
51 | -dark: rgb(47.0, 52.0, 57.0);
52 | -light: rgb(238, 238, 238);
53 | -fx-background-color: -light;
54 | /*default font */
55 | -fx-font-family: 'Roboto Medium';
56 | -fx-font-size: 14.0px;
57 | -fx-disabled-opacity: 0.6;
58 | /*default colors */
59 | -swatch-grey: rgb(200.0, 200.0, 200.0);
60 | -swatch-dark-grey: rgb(150.0, 150.0, 150.0);
61 | -swatch-light-grey: rgb(230.0, 230.0, 230.0);
62 | -swatch-toolbar: rgb(245.0, 245.0, 245.0);
63 | -swatch-toolbar-selected: rgb(215.0, 215.0, 215.0);
64 | /*
65 | Modena colors
66 | */
67 | -fx-dark-text-color: white; /* Text color when selected*/
68 | -fx-mid-text-color: -fx-text-base-color;
69 | -fx-light-text-color: -swatch-light-grey;
70 | -fx-body-color: white;
71 | /* A bright blue for the focus indicator of objects. Typically used as the
72 | * first color in -fx-background-color for the "focused" pseudo-class. Also
73 | * typically used with insets of -1.4 to provide a glowing effect.
74 | */
75 | -fx-focus-color: -swatch-400;
76 | -fx-faint-focus-color: -swatch-200;
77 | /* A bright blue for highlighting/accenting objects. For example: selected
78 | * text; selected items in menus, lists, trees, and tables; progress bars */
79 | -fx-accent: -swatch-400;
80 | -fx-dark-text-color: white;
81 | }
82 |
83 | /*******************************************************************************
84 | * *
85 | * Material Design - Cards *
86 | * *
87 | ******************************************************************************/
88 | .card {
89 | -fx-background-color: rgb(255.0, 255.0, 255.0);
90 | -fx-background-radius: 4.0;
91 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.15), 6.0, 0.7, 0.0,
92 | 1.5);
93 | -fx-padding: 16 16 16 16;
94 | }
95 |
96 | .card-title {
97 | -fx-font-size: 20.0px;
98 | -fx-padding: 5 0 5 0;
99 | }
100 |
101 | .card-title .text {
102 | -fx-fill: -fx-text-title-color;
103 | }
104 |
105 | .card-subtitle {
106 | -fx-font-size: 16.0px;
107 | -fx-padding: 5 0 5 0;
108 | }
109 |
110 | .card-subtitle .text {
111 | -fx-fill: -fx-text-subtitle-color;
112 | }
113 |
114 | .control-label {
115 | -fx-font-size: 12.0px;
116 | -fx-padding: 16 0 0 0;
117 | }
118 |
119 | .control-label .text {
120 | -fx-fill: -fx-text-control-title-color;
121 | }
122 |
123 | .card-button {
124 | -fx-effect: null;
125 | }
126 |
127 | /*******************************************************************************
128 | * *
129 | * Button & ToggleButton *
130 | * *
131 | ******************************************************************************/
132 | .button-raised {
133 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.30), 6.0, 0.3, 0,
134 | 1);
135 | -fx-background-color: rgb(250, 250, 250);
136 | }
137 |
138 | .button-flat {
139 | -fx-effect: null;
140 | -fx-background-color: transparent;
141 | }
142 |
143 | .toggle-button, .button {
144 | -fx-text-fill: -fx-text-button-normal;
145 | -fx-font-family: 'Roboto';
146 | -fx-font-weight: bold;
147 | -fx-background-insets: 0.0;
148 | -fx-background-radius: 4.0;
149 | -fx-padding: 0.7em;
150 | -fx-alignment: CENTER;
151 | }
152 |
153 | .button-raised .button .text, .button-flat .button .text {
154 | -fx-text-weight: Bold;
155 | }
156 |
157 | .button:default {
158 | -fx-background-color: -swatch-500;
159 | -fx-text-fill: -fx-text-button-colored;
160 | }
161 |
162 | .toggle-button:focused, .button:focused, .button:default:focused {
163 | -fx-background-color: -swatch-light-grey;
164 | }
165 |
166 | .toggle-button:focused:selected {
167 | -fx-background-color: derive(-swatch-500, 50.0%),
168 | derive(-swatch-500, -20.0%);
169 | -fx-background-insets: 0.0, 0.2em;
170 | -fx-text-fill: -fx-text-button-colored;
171 | }
172 |
173 | .toggle-button:armed, .toggle-button:selected, .button:armed, .button:default:armed
174 | {
175 | -fx-background-color: -swatch-grey;
176 | -fx-text-fill: -fx-text-button-colored;
177 | }
178 |
179 | .icon-button {
180 | -fx-background-color: transparent;
181 | -fx-pref-height: 42;
182 | -fx-pref-width: 42;
183 | -fx-min-height: 42;
184 | -fx-min-width: 42;
185 | -fx-padding: 0;
186 | }
187 |
188 | .icon-button .text {
189 | -fx-font-family: 'MaterialDesignIconicFont';
190 | -fx-font-size: 24px;
191 | }
192 |
193 | /*******************************************************************************
194 | * *
195 | * ComboBox, ChoiceBox COMMON *
196 | * *
197 | ******************************************************************************/
198 | .combo-box-base, .choice-box {
199 | -fx-background-color: transparent;
200 | -fx-border-color: -swatch-grey;
201 | -fx-border-width: 0 0 2 0;
202 | -fx-background-radius: 0;
203 | -fx-border-radius: 0;
204 | }
205 |
206 | .combo-box:focused, .choice-box:focused {
207 | -fx-border-color: -swatch-500;
208 | }
209 |
210 | .combo-box-base>.label, .choice-box>.label {
211 | -fx-padding: 0.7em 0.7em 0.7em 0em;
212 | }
213 |
214 | .combo-box-base>.arrow-button, .choice-box>.open-button {
215 | -fx-padding: 1.2em 0.7em 1.2em 0.5em;
216 | -fx-background-radius: 0.0 2.0 2.0 0.0;
217 | }
218 |
219 | .combo-box-base>.arrow-button>.arrow, .choice-box>.open-button>.arrow {
220 | -fx-background-color: -swatch-grey;
221 | }
222 |
223 | .combo-box-base .arrow-button:hover .arrow, .spinner .increment-arrow-button:hover .increment-arrow,
224 | .spinner .decrement-arrow-button:hover .decrement-arrow {
225 | -fx-background-color: -swatch-dark-grey;
226 | }
227 |
228 | .button-bar .button{
229 | -fx-padding: 5 5 5 5;
230 | }
231 |
232 | .menu-item:focused {
233 | -fx-background-color: -swatch-light-grey;
234 | }
235 |
236 | /*******************************************************************************
237 | * *
238 | * CheckBox *
239 | * *
240 | ******************************************************************************/
241 | .check-box {
242 | -fx-padding: 10;
243 | }
244 |
245 | .check-box .text {
246 | -fx-fill: -fx-text-base-color;
247 | }
248 |
249 | .check-box>.box, .check-box>.box.unfocused, .check-box:disabled>.box,
250 | .check-box:indeterminate>.box {
251 | -fx-border-radius: 4.0;
252 | -fx-border-color: -swatch-grey;
253 | -fx-border-width: 2;
254 | -fx-background-radius: 4;
255 | -fx-background-color: transparent;
256 | -fx-padding: 1;
257 | }
258 |
259 | .check-box:selected>.box {
260 | /*-fx-border-color: -swatch-500;*/
261 | -fx-background-color: -swatch-500;
262 | }
263 |
264 | .check-box:focused>.box {
265 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.30), 2.0, 0.3, 0,
266 | 0);
267 | }
268 |
269 | .check-box:selected>.box {
270 | -fx-background-color: white;
271 | }
272 |
273 | .check-box:indeterminate>.box {
274 | -fx-background-color: -swatch-grey;
275 | -fx-padding: 0.45em;
276 | }
277 |
278 | /*******************************************************************************
279 | * *
280 | * ChoiceBox *
281 | * *
282 | ******************************************************************************/
283 | .context-menu {
284 | -fx-background-color: rgb(255.0, 255.0, 255.0, 0.95);
285 | -fx-background-radius: 2.0;
286 | }
287 |
288 | .radio-menu-item, .check-menu-item {
289 | -fx-padding: 0.7em 0.7em 0.7em 0em;
290 | }
291 |
292 | .radio-menu-item:checked .label, .check-menu-item:checked .label {
293 | -fx-text-fill: -swatch-500;
294 | }
295 |
296 | .radio-menu-item:checked>.left-container>.radio, .check-menu-item:checked>.left-container>.check
297 | {
298 | -fx-background-color: -swatch-dark-grey;
299 | -fx-padding: 0.68em 0.5em 0.0em 0.0em;
300 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.2), 0.0, 0.0, 0.0,
301 | 1.0);
302 | }
303 |
304 | .radio-menu-item>.left-container>.radio, .check-menu-item>.left-container>.check
305 | {
306 | -fx-background-color: transparent;
307 | -fx-padding: 0.68em 0.68em 0.0em 0.0em;
308 | }
309 |
310 | /*******************************************************************************
311 | * *
312 | * ComboBox *
313 | * *
314 | ******************************************************************************/
315 | .combo-box .list-cell {
316 | -fx-padding: 0.7em 0.7em 0.7em 0em;
317 | }
318 |
319 | .popup-overlay {
320 | -fx-background-color: white;
321 | -fx-border-color: -swatch-grey;
322 | -fx-border-width: 0 0 2 0;
323 | -fx-background-radius: 0;
324 | -fx-border-radius: 0;
325 | }
326 |
327 | .title-bar {
328 | -fx-padding: 10;
329 | }
330 |
331 | .title-bar .icon {
332 | -fx-alignment: center-left;
333 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.2), 0.0, 0.0, 0.0,
334 | 1.0);
335 | }
336 |
337 | .title-bar .title-label {
338 | -fx-padding: 0 10 0 10;
339 | -fx-alignment: center;
340 | -fx-font-size: 36;
341 | -fx-font-weight: bolder;
342 | }
343 |
344 | .content-area {
345 | -fx-background-color: -dark;
346 | }
347 |
348 | .content-background {
349 | -fx-background-color: white;
350 | -fx-background-radius: 0.0 0.0 11.0 11.0;
351 | -fx-padding: 0 10 10 10;
352 | }
353 |
354 | /*******************************************************************************
355 | * *
356 | * Date Picker *
357 | * *
358 | ******************************************************************************/
359 | .date-picker-popup .button {
360 | -fx-background-color: -swatch-500;
361 | }
362 |
363 | .date-picker-popup>.month-year-pane {
364 | -fx-background-color: -swatch-500;
365 | }
366 |
367 | .date-picker-popup>*>.spinner>.button>.left-arrow, .date-picker-popup>*>.spinner>.button>.right-arrow
368 | {
369 | -fx-background-color: white;
370 | }
371 |
372 | .date-picker-popup>*>.spinner {
373 | -fx-border-width: 0;
374 | }
375 |
376 | .date-picker-popup>*>.spinner>.label {
377 | -fx-text-fill: white;
378 | -fx-font-weight: bold;
379 | }
380 |
381 | .date-picker-popup>*>.day-name-cell, .date-picker-popup>*>.week-number-cell
382 | {
383 | -fx-font-weight: normal;
384 | -fx-text-fill: -swatch-dark-grey;
385 | -fx-font-size: 1em;
386 | }
387 |
388 | /*******************************************************************************
389 | * *
390 | * Date picker *
391 | * *
392 | ******************************************************************************/
393 | .date-picker .arrow-button {
394 | -fx-background-color: transparent;
395 | }
396 |
397 | .date-picker .arrow-button .arrow {
398 | -fx-background-insets: -4;
399 | }
400 |
401 | .date-picker .date-picker-display-node {
402 | -fx-border-width: 0;
403 | }
404 |
405 | /*******************************************************************************
406 | * *
407 | * HTML Editor *
408 | * *
409 | ******************************************************************************/
410 | .html-editor {
411 | -fx-background-color: white;
412 | -fx-border-width: 2 0 2 0;
413 | -fx-border-color: -swatch-grey;
414 | }
415 |
416 | .html-editor .web-view {
417 | -fx-border-color: grey;
418 | -fx-border-width: grey;
419 | }
420 |
421 | .web-view {
422 | -fx-font-smoothing-type: gray;
423 | }
424 |
425 | /*******************************************************************************
426 | * *
427 | * Label *
428 | * *
429 | ******************************************************************************/
430 | .label {
431 | -fx-text-fill: -fx-text-base-color;
432 | }
433 |
434 | .label:disabled {
435 | -fx-opacity: -fx-disabled-opacity;
436 | }
437 |
438 | .label:show-mnemonics>.mnemonic-underline {
439 | -fx-stroke: -fx-text-base-color;
440 | }
441 |
442 | /*******************************************************************************
443 | * *
444 | * List, Tree, Table COMMON *
445 | * *
446 | ******************************************************************************/
447 | .list-view:focused .list-cell:filled:focused:selected {
448 | -fx-background-color: -swatch-light-grey;
449 | -fx-text-fill: -swatch-500;
450 | }
451 |
452 | .list-view:hover .list-cell:hover {
453 | -fx-background-color: -swatch-light-grey;
454 | -fx-text-fill: -fx-text-base-color;
455 | }
456 |
457 | .list-cell {
458 | -fx-cell-size: 40;
459 | }
460 |
461 | /*******************************************************************************
462 | * *
463 | * ProgressBar *
464 | * *
465 | ******************************************************************************/
466 | .progress-bar>.track {
467 | -fx-background-color: derive(-swatch-grey, 50.0%);
468 | -fx-background-radius: 2.0;
469 | -fx-padding: 0.0;
470 | }
471 |
472 | .progress-bar>.bar {
473 | -fx-background-color: -swatch-500;
474 | -fx-background-radius: 2.0;
475 | -fx-background-insets: 0.0;
476 | -fx-border-width: 0.0;
477 | -fx-effect: null;
478 | }
479 |
480 | .progress-bar:indeterminate>.bar {
481 | -fx-background-color: derive(-swatch-500, 50.0%);
482 | -fx-background-radius: 2.0;
483 | -fx-background-insets: 0.0;
484 | -fx-border-width: 0.0;
485 | -fx-effect: null;
486 | }
487 |
488 | /*******************************************************************************
489 | * *
490 | * ProgressIndicator *
491 | * *
492 | ******************************************************************************/
493 | .progress-indicator>.spinner {
494 | -fx-border-width: 0;
495 | }
496 |
497 | .progress-indicator>.determinate-indicator>.indicator {
498 | -fx-background-color: rgb(255.0, 255.0, 255.0, 0.5);
499 | -fx-padding: 0.0;
500 | }
501 |
502 | .progress-indicator>.determinate-indicator>.progress {
503 | -fx-background-color: -swatch-500;
504 | }
505 |
506 | .progress-indicator>.determinate-indicator>.percentage {
507 | -fx-fill: -fx-text-base-color;
508 | -fx-translate-y: 0em;
509 | -fx-padding: 0.0;
510 | -fx-font-size: 11px;
511 | }
512 |
513 | /*******************************************************************************
514 | * *
515 | * RadioButton *
516 | * *
517 | ******************************************************************************/
518 | .radio-button {
519 | -fx-padding: 10;
520 | }
521 |
522 | .radio-button .text {
523 | -fx-fill: -fx-text-base-color;
524 | }
525 |
526 | .radio-button>.radio, .radio-button>.radio.unfocused, .radio-button:disabled>.radio,
527 | .radio-button:selected>.radio {
528 | -fx-border-radius: 100.0;
529 | -fx-border-color: -swatch-grey;
530 | -fx-border-width: 2;
531 | -fx-background-radius: 100;
532 | -fx-background-color: transparent;
533 | -fx-padding: 3 3 3 3;
534 | }
535 |
536 | .radio-button:focused>.radio {
537 | -fx-background-color: -swatch-100;
538 | }
539 |
540 | .radio-button:focused:armed>.radio {
541 | -fx-background-color: -swatch-100;
542 | }
543 |
544 | .radio-button:selected>.radio>.dot {
545 | -fx-background-color: -swatch-500;
546 | -fx-background-insets: 0;
547 | }
548 |
549 | /*******************************************************************************
550 | * *
551 | * Separators *
552 | * *
553 | ******************************************************************************/
554 | .separator {
555 | -fx-padding: 16 -16 16 -16;
556 | }
557 |
558 | /*******************************************************************************
559 | * *
560 | * Scroll Bar *
561 | * *
562 | ******************************************************************************/
563 | .scroll-bar:vertical>.track-background, .scroll-bar:horizontal>.track-background
564 | {
565 | -fx-background-color: -swatch-light-grey;
566 | -fx-background-insets: 0.0;
567 | }
568 |
569 | .scroll-bar:vertical>.thumb, .scroll-bar:horizontal>.thumb {
570 | -fx-background-color: -swatch-grey;
571 | -fx-background-insets: 0.0;
572 | -fx-background-radius: 4.0;
573 | }
574 |
575 | .scroll-bar>.increment-button, .scroll-bar>.decrement-button,
576 | .scroll-bar:hover>.increment-button, .scroll-bar:hover>.decrement-button
577 | {
578 | -fx-background-color: transparent;
579 | }
580 |
581 | .scroll-bar>.increment-button>.increment-arrow, .scroll-bar>.decrement-button>.decrement-arrow
582 | {
583 | -fx-background-color: -swatch-dark-grey;
584 | }
585 |
586 | .scroll-bar>.track-background {
587 | -fx-background-color: transparent;
588 | }
589 |
590 | /*******************************************************************************
591 | * *
592 | * Slider *
593 | * *
594 | ******************************************************************************/
595 | .slider {
596 | -fx-padding: 10 0 10 0;
597 | }
598 |
599 | .slider:vertical {
600 | -fx-padding: 0 10 0 10;
601 | }
602 |
603 | .slider>.track {
604 | -fx-background-color: -swatch-grey;
605 | -fx-background-insets: 1.5;
606 | }
607 |
608 | .slider>.thumb {
609 | -fx-background-color: -swatch-500;
610 | }
611 |
612 | /*******************************************************************************
613 | * *
614 | * Spinner *
615 | * *
616 | ******************************************************************************/
617 | .spinner {
618 | -fx-background-color: transparent;
619 | -fx-border-width: 0 0 2 0;
620 | -fx-border-color: -swatch-grey;
621 | }
622 |
623 | .spinner:focused {
624 | -fx-border-color: -swatch-500;
625 | }
626 |
627 | .spinner .text-field {
628 | -fx-background-color: transparent;
629 | -fx-background-radius: 0;
630 | -fx-border-width: 0;
631 | -fx-padding: 0.5em 0.5em 0.5em 0.1em;
632 | -fx-prompt-text-fill: derive(-dark, 50.0%);
633 | -fx-highlight-fill: rgb(94.0, 203.0, 234.0);
634 | }
635 |
636 | .spinner .increment-arrow-button, .spinner .decrement-arrow-button {
637 | -fx-background-color: transparent;
638 | -fx-fill: swatch-500;
639 | }
640 |
641 | .spinner .increment-arrow-button .increment-arrow, .spinner .decrement-arrow-button .decrement-arrow
642 | {
643 | -fx-background-color: -swatch-grey;
644 | }
645 |
646 | .spinner .increment-arrow-button, .spinner .decrement-arrow-button {
647 | -fx-background-color: transparent;
648 | -fx-fill: swatch-500;
649 | }
650 |
651 | /*******************************************************************************
652 | * *
653 | * Tables *
654 | * *
655 | ******************************************************************************/
656 | .table-view, .tree-table-view {
657 | /* Constants used throughout the tableview. */
658 | -fx-table-header-border-color: transparent;
659 | -fx-table-cell-border-color: -fx-box-border; /* Horizontal Lines*/
660 | -fx-background-color: transparent;
661 | }
662 |
663 | /* The column header row is made up of a number of column-header, one for each
664 | TableColumn, and a 'filler' area that extends from the right-most column
665 | to the edge of the tableview, or up to the 'column control' button. */
666 | .table-view .filler, .tree-table-view .filler, .table-view .column-header,
667 | .tree-table-view .column-header {
668 | -fx-size: 65;
669 | -fx-border-style: null;
670 | -fx-border-color: -swatch-grey;
671 | -fx-border-width: 0 0 2 0;
672 | -fx-background-color: transparent;
673 | }
674 |
675 | .table-view .show-hide-columns-button, .tree-table-view .show-hide-columns-button
676 | {
677 | -fx-background-color: transparent;
678 | }
679 |
680 | .table-view .column-header .label, .table-view .filler .label,
681 | .table-view .column-drag-header .label, .tree-table-view .column-header .label,
682 | .tree-table-view .filler .label, .tree-table-view .column-drag-header .label
683 | {
684 | -fx-alignment: CENTER_LEFT;
685 | }
686 |
687 | .table-view .column-header-background, .tree-table-view .column-header-background
688 | {
689 | -fx-background-color: transparent;
690 | }
691 |
692 | .table-row-cell, .tree-table-row-cell {
693 | -fx-cell-size: 40px;
694 | }
695 |
696 | .table-cell {
697 | -fx-border-color: transparent; /* Vertical Lines*/
698 | -fx-border-width: 1;
699 | }
700 |
701 | /*******************************************************************************
702 | * *
703 | * Text, Text field & Text area *
704 | * *
705 | ******************************************************************************/
706 | .text {
707 | -fx-font-smoothing-type: gray;
708 | }
709 |
710 | .text-area, .text-field, .text{
711 | -fx-background-color: transparent;
712 | -fx-background-radius: 2.0;
713 | -fx-padding: 0.5em 0.5em 0.5em 0.1em;
714 | -fx-border-color: -swatch-grey;
715 | -fx-border-width: 0 0 2 0;
716 | -fx-prompt-text-fill: derive(-dark, 50.0%);
717 | -fx-highlight-fill: rgb(94.0, 203.0, 234.0);
718 | }
719 |
720 | .text-area .text, .text-field>*>.text {
721 | -fx-effect: null;
722 | -fx-fill: -dark;
723 | }
724 |
725 | .text-area {
726 | -fx-padding: 0.15em;
727 | }
728 |
729 | .text-area .content {
730 | -fx-padding: 0.7em;
731 | -fx-border-width: 0.0;
732 | -fx-background-color: transparent;
733 | }
734 |
735 | .text-area:focused .content {
736 | -fx-background-color: transparent;
737 | }
738 |
739 | .text-area:focused, .text-field:focused {
740 | -fx-border-color: -swatch-500;
741 | }
742 |
743 | /*******************************************************************************
744 | * *
745 | * Tool bar & Menu bar *
746 | * *
747 | ******************************************************************************/
748 | .tool-bar, .menu-bar { /* top */
749 | -fx-background-color: -swatch-toolbar;
750 | -fx-border-width: 0 0 2 0;
751 | -fx-border-color: -swatch-grey;
752 | -fx-min-height: 48;
753 | -fx-alignment: CENTER_LEFT;
754 | }
755 |
756 | .tool-bar .label {
757 | -fx-font-size: 18;
758 | }
759 |
760 | .tool-bar .combo-box-base, .menu-bar .combo-base {
761 | -fx-border-width: 0;
762 | }
763 |
764 | .tool-bar .button, .tool-bar .toggle-button {
765 | -fx-background-color: -swatch-toolbar;
766 | -fx-text-fill: -fx-text-base-color;
767 | -fx-pref-height: 42;
768 | -fx-pref-width: 42;
769 | -fx-min-height: 42;
770 | -fx-min-width: 42;
771 | -fx-padding: 0;
772 | -fx-background-radius: 0;
773 | }
774 |
775 | .tool-bar .button:pressed, .tool-bar .toggle-button:pressed, .tool-bar .toggle-button:selected
776 | {
777 | -fx-background-color: -swatch-grey;
778 | }
779 |
780 | .tool-bar .toggle-button {
781 | -fx-background-color: -swatch-toolbar;
782 | }
783 |
784 | .tool-bar .separator {
785 | -fx-padding: 5 10 5 10;
786 | }
787 |
788 | .toolbar-colored {
789 | -fx-background-color: -swatch-500;
790 | -fx-border-width: 0 0 2 0;
791 | -fx-border-color: -swatch-grey;
792 | }
793 |
794 | .toolbar-colored .button, .toolbar-colored .toggle-button {
795 | -fx-background-color: -swatch-500;
796 | -fx-text-fill: white;
797 | }
798 |
799 | .toolbar-colored .button:pressed, .toolbar-colored .toggle-button:pressed,
800 | .toolbar-colored .toggle-button:selected {
801 | -fx-background-color: -swatch-200;
802 | }
803 |
804 | .toolbar-colored .text {
805 | -fx-fill: white;
806 | }
807 |
808 | #error_text {
809 | -fx-fill: rgb(244,67,54);
810 | }
811 |
812 | #severe_text{
813 | -fx-fill: rgb(244,81,30);
814 | }
815 |
816 | #warning_text{
817 | -fx-fill: rgb(251,140,0);
818 | }
819 |
820 | #normal_text{
821 | -fx-fill: rgb(66,66,66);
822 | }
823 |
824 | #info_text{
825 | -fx-fill: rgb(41,182,246);
826 | }
827 |
828 | #fine_text{
829 | -fx-fill: rgb(46,125,50);
830 | }
831 |
--------------------------------------------------------------------------------
/out/production/ApktoolFX/styles/materialfx-toggleswitch.css:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * *
3 | * Root *
4 | * *
5 | ******************************************************************************/
6 | .root {
7 | /* Swatch Colors - Blue*/
8 | -swatch-100: #BBDEFB;
9 | -swatch-200: #90CAF9;
10 | -swatch-300: #64BEF6;
11 | -swatch-400: #42A5F5;
12 | -swatch-500: #2196F3;
13 | -fx-text-base-color: rgb(100.0, 100.0, 100.0);
14 | /* Text defaults */
15 | -fx-font-family: 'Roboto Medium';
16 | -fx-font-size: 14.0px;
17 | -fx-disabled-opacity: 0.6;
18 | -fx-text-fill: -fx-text-base-color;
19 | }
20 |
21 | /*******************************************************************************
22 | * *
23 | * Text, Text field & Text area *
24 | * *
25 | ******************************************************************************/
26 | .text {
27 | -fx-font-smoothing-type: gray;
28 | -fx-fill: -fx-text-base-color;
29 | }
30 |
31 | /*******************************************************************************
32 | * *
33 | * CheckBox -> Material ToggleSwitch *
34 | * *
35 | ******************************************************************************/
36 |
37 | .check-box>*.box{
38 | -fx-background-color: rgb(200.0, 200.0, 200.0);
39 | -fx-pref-height: 20;
40 | -fx-pref-width: 40;
41 | -fx-background-radius: 100; /* Full round corner */
42 | -fx-background-insets: 2.5;
43 | -fx-padding:0;
44 | }
45 | .check-box:selected>*.box{
46 | -fx-background-color: derive(-swatch-500, 0.54);
47 | }
48 |
49 | .check-box:disabled>*.box{
50 | -fx-background-color: derive(grey, 0.54);
51 | }
52 |
53 |
54 | .check-box >*.box>*.mark {
55 | -fx-background-color: white;
56 | -fx-padding:0;
57 | -fx-background-insets: 0;
58 | -fx-shape: "M 10.5,0 C 4.7010101,0 0,4.7010101 0,10.5 0,16.29899 4.7010101,21 10.5,21 16.29899,21 21,16.29899 21,10.5 21,4.7010101 16.29899,0 10.5,0 Z m 29.455078,10.6875 0,0.134766 0.08984,0 0,-0.134766 z";
59 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.15), 6.0, 0.7, 0.0,1.5);
60 | }
61 |
62 | .check-box:selected>*.box>*.mark {
63 | -fx-background-color: -swatch-500;
64 | -fx-shape: "M 10,5 c 5.79899,0 10.5,4.701 10.5,10.5 0,5.799 -4.70101,10.5 -10.5,10.5 -5.79899,0 -10.5,-4.701 -10.5,-10.5 0,-5.799 4.70101,-10.5 10.5,-10.5 z m -29.455078,10.6875 0,0.1348 -0.08984,0 0,-0.1348 z";
65 | }
66 |
67 | .check-box:indeterminate>*.box>*.mark {
68 | -fx-background-color: white;
69 | -fx-shape: "M 20 0 C 14.20101 0 9.5 4.701 9.5 10.5 C 9.5 16.299 14.20101 21 20 21 C 25.79899 21 30.5 16.299 30.5 10.5 C 30.5 4.701 25.79899 0 20 0 z M 0 10.6875 L 0 10.822266 L 0.08984375 10.822266 L 0.08984375 10.6875 L 0 10.6875 z M 40.066406 10.900391 A 0.080000006 0.050000001 0 0 0 40 10.949219 A 0.080000006 0.050000001 0 0 0 40.080078 11 A 0.080000006 0.050000001 0 0 0 40.160156 10.949219 A 0.080000006 0.050000001 0 0 0 40.080078 10.900391 A 0.080000006 0.050000001 0 0 0 40.066406 10.900391 z ";
70 | }
71 |
72 | .check-box:disabled>*.box>*.mark {
73 | -fx-background-color: grey;
74 | }
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/out/production/ApktoolFX/styles/materialfx-toggleswitch.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: com.bittle.apktoolfx.Main
3 |
4 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/LOGGER.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/Apktool_GUI/com/bittle/apktoolfx/LOGGER.class
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/Main.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/Apktool_GUI/com/bittle/apktoolfx/Main.class
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/MainFXML.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/CompileController$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/CompileController$1.class
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/CompileController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/CompileController.class
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/Controller.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/Controller.class
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/DecompileController$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/DecompileController$1.class
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/DecompileController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oscar0812/ApktoolFX/0d24fca0ced2a84b03d5216a2df47b213271aaf5/out/production/Apktool_GUI/com/bittle/apktoolfx/controllers/DecompileController.class
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/fxml/CompileTabPage.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/com/bittle/apktoolfx/fxml/DecompileTabPage.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/styles/MaterialFxTester.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
260 |
261 |
262 |
269 |
276 |
281 |
282 |
283 |
288 |
289 |
290 |
295 |
296 |
297 |
298 |
299 |
304 |
309 |
314 |
319 |
320 |
321 |
322 |
323 |
327 |
328 |
329 |
334 |
335 |
336 |
337 |
338 |
342 |
347 |
352 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/styles/material.css:
--------------------------------------------------------------------------------
1 | /*
2 | * The MIT License (MIT)
3 | *
4 | * Copyright (c) 2015 - AGIX | Innovative Engineering
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the "Software"), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | *
24 | */
25 |
26 | /*
27 | * This is a Material Design CSS for JavaFX
28 | */
29 |
30 | /*******************************************************************************
31 | * *
32 | * Root *
33 | * *
34 | ******************************************************************************/
35 | .root {
36 | /* Swatch Colors - Blue*/
37 | -swatch-100: #BBDEFB;
38 | -swatch-200: #90CAF9;
39 | -swatch-300: #64BEF6;
40 | -swatch-400: #42A5F5;
41 | -swatch-500: #2196F3;
42 | /*default text */
43 | -fx-text-base-color: rgb(100.0, 100.0, 100.0);
44 | -fx-text-button-normal: -swatch-500;
45 | -fx-text-button-colored: rgb(255.0, 255.0, 255.0);
46 | -fx-text-button-text: rgb(100.0, 100.0, 100.0);
47 | -fx-text-title-color: rgb(45.0, 45.0, 45.0);
48 | -fx-text-subtitle-color: rgb(65.0, 65.0, 65.0);
49 | -fx-text-control-title-color: rgb(130.0, 130.0, 130.0);
50 | -fx-text-fill: -fx-text-base-color;
51 | -dark: rgb(47.0, 52.0, 57.0);
52 | -light: rgb(238, 238, 238);
53 | -fx-background-color: -light;
54 | /*default font */
55 | -fx-font-family: 'Roboto Medium';
56 | -fx-font-size: 14.0px;
57 | -fx-disabled-opacity: 0.6;
58 | /*default colors */
59 | -swatch-grey: rgb(200.0, 200.0, 200.0);
60 | -swatch-dark-grey: rgb(150.0, 150.0, 150.0);
61 | -swatch-light-grey: rgb(230.0, 230.0, 230.0);
62 | -swatch-toolbar: rgb(245.0, 245.0, 245.0);
63 | -swatch-toolbar-selected: rgb(215.0, 215.0, 215.0);
64 | /*
65 | Modena colors
66 | */
67 | -fx-dark-text-color: white; /* Text color when selected*/
68 | -fx-mid-text-color: -fx-text-base-color;
69 | -fx-light-text-color: -swatch-light-grey;
70 | -fx-body-color: white;
71 | /* A bright blue for the focus indicator of objects. Typically used as the
72 | * first color in -fx-background-color for the "focused" pseudo-class. Also
73 | * typically used with insets of -1.4 to provide a glowing effect.
74 | */
75 | -fx-focus-color: -swatch-400;
76 | -fx-faint-focus-color: -swatch-200;
77 | /* A bright blue for highlighting/accenting objects. For example: selected
78 | * text; selected items in menus, lists, trees, and tables; progress bars */
79 | -fx-accent: -swatch-400;
80 | -fx-dark-text-color: white;
81 | }
82 |
83 | /*******************************************************************************
84 | * *
85 | * Material Design - Cards *
86 | * *
87 | ******************************************************************************/
88 | .card {
89 | -fx-background-color: rgb(255.0, 255.0, 255.0);
90 | -fx-background-radius: 4.0;
91 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.15), 6.0, 0.7, 0.0,
92 | 1.5);
93 | -fx-padding: 16 16 16 16;
94 | }
95 |
96 | .card-title {
97 | -fx-font-size: 20.0px;
98 | -fx-padding: 5 0 5 0;
99 | }
100 |
101 | .card-title .text {
102 | -fx-fill: -fx-text-title-color;
103 | }
104 |
105 | .card-subtitle {
106 | -fx-font-size: 16.0px;
107 | -fx-padding: 5 0 5 0;
108 | }
109 |
110 | .card-subtitle .text {
111 | -fx-fill: -fx-text-subtitle-color;
112 | }
113 |
114 | .control-label {
115 | -fx-font-size: 12.0px;
116 | -fx-padding: 16 0 0 0;
117 | }
118 |
119 | .control-label .text {
120 | -fx-fill: -fx-text-control-title-color;
121 | }
122 |
123 | .card-button {
124 | -fx-effect: null;
125 | }
126 |
127 | /*******************************************************************************
128 | * *
129 | * Button & ToggleButton *
130 | * *
131 | ******************************************************************************/
132 | .button-raised {
133 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.30), 6.0, 0.3, 0,
134 | 1);
135 | -fx-background-color: rgb(250, 250, 250);
136 | }
137 |
138 | .button-flat {
139 | -fx-effect: null;
140 | -fx-background-color: transparent;
141 | }
142 |
143 | .toggle-button, .button {
144 | -fx-text-fill: -fx-text-button-normal;
145 | -fx-font-family: 'Roboto';
146 | -fx-font-weight: bold;
147 | -fx-background-insets: 0.0;
148 | -fx-background-radius: 4.0;
149 | -fx-padding: 0.7em;
150 | -fx-alignment: CENTER;
151 | }
152 |
153 | .button-raised .button .text, .button-flat .button .text {
154 | -fx-text-weight: Bold;
155 | }
156 |
157 | .button:default {
158 | -fx-background-color: -swatch-500;
159 | -fx-text-fill: -fx-text-button-colored;
160 | }
161 |
162 | .toggle-button:focused, .button:focused, .button:default:focused {
163 | -fx-background-color: -swatch-light-grey;
164 | }
165 |
166 | .toggle-button:focused:selected {
167 | -fx-background-color: derive(-swatch-500, 50.0%),
168 | derive(-swatch-500, -20.0%);
169 | -fx-background-insets: 0.0, 0.2em;
170 | -fx-text-fill: -fx-text-button-colored;
171 | }
172 |
173 | .toggle-button:armed, .toggle-button:selected, .button:armed, .button:default:armed
174 | {
175 | -fx-background-color: -swatch-grey;
176 | -fx-text-fill: -fx-text-button-colored;
177 | }
178 |
179 | .icon-button {
180 | -fx-background-color: transparent;
181 | -fx-pref-height: 42;
182 | -fx-pref-width: 42;
183 | -fx-min-height: 42;
184 | -fx-min-width: 42;
185 | -fx-padding: 0;
186 | }
187 |
188 | .icon-button .text {
189 | -fx-font-family: 'MaterialDesignIconicFont';
190 | -fx-font-size: 24px;
191 | }
192 |
193 | /*******************************************************************************
194 | * *
195 | * ComboBox, ChoiceBox COMMON *
196 | * *
197 | ******************************************************************************/
198 | .combo-box-base, .choice-box {
199 | -fx-background-color: transparent;
200 | -fx-border-color: -swatch-grey;
201 | -fx-border-width: 0 0 2 0;
202 | -fx-background-radius: 0;
203 | -fx-border-radius: 0;
204 | }
205 |
206 | .combo-box:focused, .choice-box:focused {
207 | -fx-border-color: -swatch-500;
208 | }
209 |
210 | .combo-box-base>.label, .choice-box>.label {
211 | -fx-padding: 0.7em 0.7em 0.7em 0em;
212 | }
213 |
214 | .combo-box-base>.arrow-button, .choice-box>.open-button {
215 | -fx-padding: 1.2em 0.7em 1.2em 0.5em;
216 | -fx-background-radius: 0.0 2.0 2.0 0.0;
217 | }
218 |
219 | .combo-box-base>.arrow-button>.arrow, .choice-box>.open-button>.arrow {
220 | -fx-background-color: -swatch-grey;
221 | }
222 |
223 | .combo-box-base .arrow-button:hover .arrow, .spinner .increment-arrow-button:hover .increment-arrow,
224 | .spinner .decrement-arrow-button:hover .decrement-arrow {
225 | -fx-background-color: -swatch-dark-grey;
226 | }
227 |
228 | .button-bar .button{
229 | -fx-padding: 5 5 5 5;
230 | }
231 |
232 | .menu-item:focused {
233 | -fx-background-color: -swatch-light-grey;
234 | }
235 |
236 | /*******************************************************************************
237 | * *
238 | * CheckBox *
239 | * *
240 | ******************************************************************************/
241 | .check-box {
242 | -fx-padding: 10;
243 | }
244 |
245 | .check-box .text {
246 | -fx-fill: -fx-text-base-color;
247 | }
248 |
249 | .check-box>.box, .check-box>.box.unfocused, .check-box:disabled>.box,
250 | .check-box:indeterminate>.box {
251 | -fx-border-radius: 4.0;
252 | -fx-border-color: -swatch-grey;
253 | -fx-border-width: 2;
254 | -fx-background-radius: 4;
255 | -fx-background-color: transparent;
256 | -fx-padding: 1;
257 | }
258 |
259 | .check-box:selected>.box {
260 | /*-fx-border-color: -swatch-500;*/
261 | -fx-background-color: -swatch-500;
262 | }
263 |
264 | .check-box:focused>.box {
265 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.30), 2.0, 0.3, 0,
266 | 0);
267 | }
268 |
269 | .check-box:selected>.box {
270 | -fx-background-color: white;
271 | }
272 |
273 | .check-box:indeterminate>.box {
274 | -fx-background-color: -swatch-grey;
275 | -fx-padding: 0.45em;
276 | }
277 |
278 | /*******************************************************************************
279 | * *
280 | * ChoiceBox *
281 | * *
282 | ******************************************************************************/
283 | .context-menu {
284 | -fx-background-color: rgb(255.0, 255.0, 255.0, 0.95);
285 | -fx-background-radius: 2.0;
286 | }
287 |
288 | .radio-menu-item, .check-menu-item {
289 | -fx-padding: 0.7em 0.7em 0.7em 0em;
290 | }
291 |
292 | .radio-menu-item:checked .label, .check-menu-item:checked .label {
293 | -fx-text-fill: -swatch-500;
294 | }
295 |
296 | .radio-menu-item:checked>.left-container>.radio, .check-menu-item:checked>.left-container>.check
297 | {
298 | -fx-background-color: -swatch-dark-grey;
299 | -fx-padding: 0.68em 0.5em 0.0em 0.0em;
300 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.2), 0.0, 0.0, 0.0,
301 | 1.0);
302 | }
303 |
304 | .radio-menu-item>.left-container>.radio, .check-menu-item>.left-container>.check
305 | {
306 | -fx-background-color: transparent;
307 | -fx-padding: 0.68em 0.68em 0.0em 0.0em;
308 | }
309 |
310 | /*******************************************************************************
311 | * *
312 | * ComboBox *
313 | * *
314 | ******************************************************************************/
315 | .combo-box .list-cell {
316 | -fx-padding: 0.7em 0.7em 0.7em 0em;
317 | }
318 |
319 | .popup-overlay {
320 | -fx-background-color: white;
321 | -fx-border-color: -swatch-grey;
322 | -fx-border-width: 0 0 2 0;
323 | -fx-background-radius: 0;
324 | -fx-border-radius: 0;
325 | }
326 |
327 | .title-bar {
328 | -fx-padding: 10;
329 | }
330 |
331 | .title-bar .icon {
332 | -fx-alignment: center-left;
333 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.2), 0.0, 0.0, 0.0,
334 | 1.0);
335 | }
336 |
337 | .title-bar .title-label {
338 | -fx-padding: 0 10 0 10;
339 | -fx-alignment: center;
340 | -fx-font-size: 36;
341 | -fx-font-weight: bolder;
342 | }
343 |
344 | .content-area {
345 | -fx-background-color: -dark;
346 | }
347 |
348 | .content-background {
349 | -fx-background-color: white;
350 | -fx-background-radius: 0.0 0.0 11.0 11.0;
351 | -fx-padding: 0 10 10 10;
352 | }
353 |
354 | /*******************************************************************************
355 | * *
356 | * Date Picker *
357 | * *
358 | ******************************************************************************/
359 | .date-picker-popup .button {
360 | -fx-background-color: -swatch-500;
361 | }
362 |
363 | .date-picker-popup>.month-year-pane {
364 | -fx-background-color: -swatch-500;
365 | }
366 |
367 | .date-picker-popup>*>.spinner>.button>.left-arrow, .date-picker-popup>*>.spinner>.button>.right-arrow
368 | {
369 | -fx-background-color: white;
370 | }
371 |
372 | .date-picker-popup>*>.spinner {
373 | -fx-border-width: 0;
374 | }
375 |
376 | .date-picker-popup>*>.spinner>.label {
377 | -fx-text-fill: white;
378 | -fx-font-weight: bold;
379 | }
380 |
381 | .date-picker-popup>*>.day-name-cell, .date-picker-popup>*>.week-number-cell
382 | {
383 | -fx-font-weight: normal;
384 | -fx-text-fill: -swatch-dark-grey;
385 | -fx-font-size: 1em;
386 | }
387 |
388 | /*******************************************************************************
389 | * *
390 | * Date picker *
391 | * *
392 | ******************************************************************************/
393 | .date-picker .arrow-button {
394 | -fx-background-color: transparent;
395 | }
396 |
397 | .date-picker .arrow-button .arrow {
398 | -fx-background-insets: -4;
399 | }
400 |
401 | .date-picker .date-picker-display-node {
402 | -fx-border-width: 0;
403 | }
404 |
405 | /*******************************************************************************
406 | * *
407 | * HTML Editor *
408 | * *
409 | ******************************************************************************/
410 | .html-editor {
411 | -fx-background-color: white;
412 | -fx-border-width: 2 0 2 0;
413 | -fx-border-color: -swatch-grey;
414 | }
415 |
416 | .html-editor .web-view {
417 | -fx-border-color: grey;
418 | -fx-border-width: grey;
419 | }
420 |
421 | .web-view {
422 | -fx-font-smoothing-type: gray;
423 | }
424 |
425 | /*******************************************************************************
426 | * *
427 | * Label *
428 | * *
429 | ******************************************************************************/
430 | .label {
431 | -fx-text-fill: -fx-text-base-color;
432 | }
433 |
434 | .label:disabled {
435 | -fx-opacity: -fx-disabled-opacity;
436 | }
437 |
438 | .label:show-mnemonics>.mnemonic-underline {
439 | -fx-stroke: -fx-text-base-color;
440 | }
441 |
442 | /*******************************************************************************
443 | * *
444 | * List, Tree, Table COMMON *
445 | * *
446 | ******************************************************************************/
447 | .list-view:focused .list-cell:filled:focused:selected {
448 | -fx-background-color: -swatch-light-grey;
449 | -fx-text-fill: -swatch-500;
450 | }
451 |
452 | .list-view:hover .list-cell:hover {
453 | -fx-background-color: -swatch-light-grey;
454 | -fx-text-fill: -fx-text-base-color;
455 | }
456 |
457 | .list-cell {
458 | -fx-cell-size: 40;
459 | }
460 |
461 | /*******************************************************************************
462 | * *
463 | * ProgressBar *
464 | * *
465 | ******************************************************************************/
466 | .progress-bar>.track {
467 | -fx-background-color: derive(-swatch-grey, 50.0%);
468 | -fx-background-radius: 2.0;
469 | -fx-padding: 0.0;
470 | }
471 |
472 | .progress-bar>.bar {
473 | -fx-background-color: -swatch-500;
474 | -fx-background-radius: 2.0;
475 | -fx-background-insets: 0.0;
476 | -fx-border-width: 0.0;
477 | -fx-effect: null;
478 | }
479 |
480 | .progress-bar:indeterminate>.bar {
481 | -fx-background-color: derive(-swatch-500, 50.0%);
482 | -fx-background-radius: 2.0;
483 | -fx-background-insets: 0.0;
484 | -fx-border-width: 0.0;
485 | -fx-effect: null;
486 | }
487 |
488 | /*******************************************************************************
489 | * *
490 | * ProgressIndicator *
491 | * *
492 | ******************************************************************************/
493 | .progress-indicator>.spinner {
494 | -fx-border-width: 0;
495 | }
496 |
497 | .progress-indicator>.determinate-indicator>.indicator {
498 | -fx-background-color: rgb(255.0, 255.0, 255.0, 0.5);
499 | -fx-padding: 0.0;
500 | }
501 |
502 | .progress-indicator>.determinate-indicator>.progress {
503 | -fx-background-color: -swatch-500;
504 | }
505 |
506 | .progress-indicator>.determinate-indicator>.percentage {
507 | -fx-fill: -fx-text-base-color;
508 | -fx-translate-y: 0em;
509 | -fx-padding: 0.0;
510 | -fx-font-size: 11px;
511 | }
512 |
513 | /*******************************************************************************
514 | * *
515 | * RadioButton *
516 | * *
517 | ******************************************************************************/
518 | .radio-button {
519 | -fx-padding: 10;
520 | }
521 |
522 | .radio-button .text {
523 | -fx-fill: -fx-text-base-color;
524 | }
525 |
526 | .radio-button>.radio, .radio-button>.radio.unfocused, .radio-button:disabled>.radio,
527 | .radio-button:selected>.radio {
528 | -fx-border-radius: 100.0;
529 | -fx-border-color: -swatch-grey;
530 | -fx-border-width: 2;
531 | -fx-background-radius: 100;
532 | -fx-background-color: transparent;
533 | -fx-padding: 3 3 3 3;
534 | }
535 |
536 | .radio-button:focused>.radio {
537 | -fx-background-color: -swatch-100;
538 | }
539 |
540 | .radio-button:focused:armed>.radio {
541 | -fx-background-color: -swatch-100;
542 | }
543 |
544 | .radio-button:selected>.radio>.dot {
545 | -fx-background-color: -swatch-500;
546 | -fx-background-insets: 0;
547 | }
548 |
549 | /*******************************************************************************
550 | * *
551 | * Separators *
552 | * *
553 | ******************************************************************************/
554 | .separator {
555 | -fx-padding: 16 -16 16 -16;
556 | }
557 |
558 | /*******************************************************************************
559 | * *
560 | * Scroll Bar *
561 | * *
562 | ******************************************************************************/
563 | .scroll-bar:vertical>.track-background, .scroll-bar:horizontal>.track-background
564 | {
565 | -fx-background-color: -swatch-light-grey;
566 | -fx-background-insets: 0.0;
567 | }
568 |
569 | .scroll-bar:vertical>.thumb, .scroll-bar:horizontal>.thumb {
570 | -fx-background-color: -swatch-grey;
571 | -fx-background-insets: 0.0;
572 | -fx-background-radius: 4.0;
573 | }
574 |
575 | .scroll-bar>.increment-button, .scroll-bar>.decrement-button,
576 | .scroll-bar:hover>.increment-button, .scroll-bar:hover>.decrement-button
577 | {
578 | -fx-background-color: transparent;
579 | }
580 |
581 | .scroll-bar>.increment-button>.increment-arrow, .scroll-bar>.decrement-button>.decrement-arrow
582 | {
583 | -fx-background-color: -swatch-dark-grey;
584 | }
585 |
586 | .scroll-bar>.track-background {
587 | -fx-background-color: transparent;
588 | }
589 |
590 | /*******************************************************************************
591 | * *
592 | * Slider *
593 | * *
594 | ******************************************************************************/
595 | .slider {
596 | -fx-padding: 10 0 10 0;
597 | }
598 |
599 | .slider:vertical {
600 | -fx-padding: 0 10 0 10;
601 | }
602 |
603 | .slider>.track {
604 | -fx-background-color: -swatch-grey;
605 | -fx-background-insets: 1.5;
606 | }
607 |
608 | .slider>.thumb {
609 | -fx-background-color: -swatch-500;
610 | }
611 |
612 | /*******************************************************************************
613 | * *
614 | * Spinner *
615 | * *
616 | ******************************************************************************/
617 | .spinner {
618 | -fx-background-color: transparent;
619 | -fx-border-width: 0 0 2 0;
620 | -fx-border-color: -swatch-grey;
621 | }
622 |
623 | .spinner:focused {
624 | -fx-border-color: -swatch-500;
625 | }
626 |
627 | .spinner .text-field {
628 | -fx-background-color: transparent;
629 | -fx-background-radius: 0;
630 | -fx-border-width: 0;
631 | -fx-padding: 0.5em 0.5em 0.5em 0.1em;
632 | -fx-prompt-text-fill: derive(-dark, 50.0%);
633 | -fx-highlight-fill: rgb(94.0, 203.0, 234.0);
634 | }
635 |
636 | .spinner .increment-arrow-button, .spinner .decrement-arrow-button {
637 | -fx-background-color: transparent;
638 | -fx-fill: swatch-500;
639 | }
640 |
641 | .spinner .increment-arrow-button .increment-arrow, .spinner .decrement-arrow-button .decrement-arrow
642 | {
643 | -fx-background-color: -swatch-grey;
644 | }
645 |
646 | .spinner .increment-arrow-button, .spinner .decrement-arrow-button {
647 | -fx-background-color: transparent;
648 | -fx-fill: swatch-500;
649 | }
650 |
651 | /*******************************************************************************
652 | * *
653 | * Tables *
654 | * *
655 | ******************************************************************************/
656 | .table-view, .tree-table-view {
657 | /* Constants used throughout the tableview. */
658 | -fx-table-header-border-color: transparent;
659 | -fx-table-cell-border-color: -fx-box-border; /* Horizontal Lines*/
660 | -fx-background-color: transparent;
661 | }
662 |
663 | /* The column header row is made up of a number of column-header, one for each
664 | TableColumn, and a 'filler' area that extends from the right-most column
665 | to the edge of the tableview, or up to the 'column control' button. */
666 | .table-view .filler, .tree-table-view .filler, .table-view .column-header,
667 | .tree-table-view .column-header {
668 | -fx-size: 65;
669 | -fx-border-style: null;
670 | -fx-border-color: -swatch-grey;
671 | -fx-border-width: 0 0 2 0;
672 | -fx-background-color: transparent;
673 | }
674 |
675 | .table-view .show-hide-columns-button, .tree-table-view .show-hide-columns-button
676 | {
677 | -fx-background-color: transparent;
678 | }
679 |
680 | .table-view .column-header .label, .table-view .filler .label,
681 | .table-view .column-drag-header .label, .tree-table-view .column-header .label,
682 | .tree-table-view .filler .label, .tree-table-view .column-drag-header .label
683 | {
684 | -fx-alignment: CENTER_LEFT;
685 | }
686 |
687 | .table-view .column-header-background, .tree-table-view .column-header-background
688 | {
689 | -fx-background-color: transparent;
690 | }
691 |
692 | .table-row-cell, .tree-table-row-cell {
693 | -fx-cell-size: 40px;
694 | }
695 |
696 | .table-cell {
697 | -fx-border-color: transparent; /* Vertical Lines*/
698 | -fx-border-width: 1;
699 | }
700 |
701 | /*******************************************************************************
702 | * *
703 | * Text, Text field & Text area *
704 | * *
705 | ******************************************************************************/
706 | .text {
707 | -fx-font-smoothing-type: gray;
708 | }
709 |
710 | .text-area, .text-field, .text{
711 | -fx-background-color: transparent;
712 | -fx-background-radius: 2.0;
713 | -fx-padding: 0.5em 0.5em 0.5em 0.1em;
714 | -fx-border-color: -swatch-grey;
715 | -fx-border-width: 0 0 2 0;
716 | -fx-prompt-text-fill: derive(-dark, 50.0%);
717 | -fx-highlight-fill: rgb(94.0, 203.0, 234.0);
718 | }
719 |
720 | .text-area .text, .text-field>*>.text {
721 | -fx-effect: null;
722 | -fx-fill: -dark;
723 | }
724 |
725 | .text-area {
726 | -fx-padding: 0.15em;
727 | }
728 |
729 | .text-area .content {
730 | -fx-padding: 0.7em;
731 | -fx-border-width: 0.0;
732 | -fx-background-color: transparent;
733 | }
734 |
735 | .text-area:focused .content {
736 | -fx-background-color: transparent;
737 | }
738 |
739 | .text-area:focused, .text-field:focused {
740 | -fx-border-color: -swatch-500;
741 | }
742 |
743 | /*******************************************************************************
744 | * *
745 | * Tool bar & Menu bar *
746 | * *
747 | ******************************************************************************/
748 | .tool-bar, .menu-bar { /* top */
749 | -fx-background-color: -swatch-toolbar;
750 | -fx-border-width: 0 0 2 0;
751 | -fx-border-color: -swatch-grey;
752 | -fx-min-height: 48;
753 | -fx-alignment: CENTER_LEFT;
754 | }
755 |
756 | .tool-bar .label {
757 | -fx-font-size: 18;
758 | }
759 |
760 | .tool-bar .combo-box-base, .menu-bar .combo-base {
761 | -fx-border-width: 0;
762 | }
763 |
764 | .tool-bar .button, .tool-bar .toggle-button {
765 | -fx-background-color: -swatch-toolbar;
766 | -fx-text-fill: -fx-text-base-color;
767 | -fx-pref-height: 42;
768 | -fx-pref-width: 42;
769 | -fx-min-height: 42;
770 | -fx-min-width: 42;
771 | -fx-padding: 0;
772 | -fx-background-radius: 0;
773 | }
774 |
775 | .tool-bar .button:pressed, .tool-bar .toggle-button:pressed, .tool-bar .toggle-button:selected
776 | {
777 | -fx-background-color: -swatch-grey;
778 | }
779 |
780 | .tool-bar .toggle-button {
781 | -fx-background-color: -swatch-toolbar;
782 | }
783 |
784 | .tool-bar .separator {
785 | -fx-padding: 5 10 5 10;
786 | }
787 |
788 | .toolbar-colored {
789 | -fx-background-color: -swatch-500;
790 | -fx-border-width: 0 0 2 0;
791 | -fx-border-color: -swatch-grey;
792 | }
793 |
794 | .toolbar-colored .button, .toolbar-colored .toggle-button {
795 | -fx-background-color: -swatch-500;
796 | -fx-text-fill: white;
797 | }
798 |
799 | .toolbar-colored .button:pressed, .toolbar-colored .toggle-button:pressed,
800 | .toolbar-colored .toggle-button:selected {
801 | -fx-background-color: -swatch-200;
802 | }
803 |
804 | .toolbar-colored .text {
805 | -fx-fill: white;
806 | }
807 |
808 | #error_text {
809 | -fx-fill: rgb(244,67,54);
810 | }
811 |
812 | #severe_text{
813 | -fx-fill: rgb(244,81,30);
814 | }
815 |
816 | #warning_text{
817 | -fx-fill: rgb(251,140,0);
818 | }
819 |
820 | #normal_text{
821 | -fx-fill: rgb(66,66,66);
822 | }
823 |
824 | #info_text{
825 | -fx-fill: rgb(41,182,246);
826 | }
827 |
828 | #fine_text{
829 | -fx-fill: rgb(46,125,50);
830 | }
831 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/styles/materialfx-toggleswitch.css:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * *
3 | * Root *
4 | * *
5 | ******************************************************************************/
6 | .root {
7 | /* Swatch Colors - Blue*/
8 | -swatch-100: #BBDEFB;
9 | -swatch-200: #90CAF9;
10 | -swatch-300: #64BEF6;
11 | -swatch-400: #42A5F5;
12 | -swatch-500: #2196F3;
13 | -fx-text-base-color: rgb(100.0, 100.0, 100.0);
14 | /* Text defaults */
15 | -fx-font-family: 'Roboto Medium';
16 | -fx-font-size: 14.0px;
17 | -fx-disabled-opacity: 0.6;
18 | -fx-text-fill: -fx-text-base-color;
19 | }
20 |
21 | /*******************************************************************************
22 | * *
23 | * Text, Text field & Text area *
24 | * *
25 | ******************************************************************************/
26 | .text {
27 | -fx-font-smoothing-type: gray;
28 | -fx-fill: -fx-text-base-color;
29 | }
30 |
31 | /*******************************************************************************
32 | * *
33 | * CheckBox -> Material ToggleSwitch *
34 | * *
35 | ******************************************************************************/
36 |
37 | .check-box>*.box{
38 | -fx-background-color: rgb(200.0, 200.0, 200.0);
39 | -fx-pref-height: 20;
40 | -fx-pref-width: 40;
41 | -fx-background-radius: 100; /* Full round corner */
42 | -fx-background-insets: 2.5;
43 | -fx-padding:0;
44 | }
45 | .check-box:selected>*.box{
46 | -fx-background-color: derive(-swatch-500, 0.54);
47 | }
48 |
49 | .check-box:disabled>*.box{
50 | -fx-background-color: derive(grey, 0.54);
51 | }
52 |
53 |
54 | .check-box >*.box>*.mark {
55 | -fx-background-color: white;
56 | -fx-padding:0;
57 | -fx-background-insets: 0;
58 | -fx-shape: "M 10.5,0 C 4.7010101,0 0,4.7010101 0,10.5 0,16.29899 4.7010101,21 10.5,21 16.29899,21 21,16.29899 21,10.5 21,4.7010101 16.29899,0 10.5,0 Z m 29.455078,10.6875 0,0.134766 0.08984,0 0,-0.134766 z";
59 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.15), 6.0, 0.7, 0.0,1.5);
60 | }
61 |
62 | .check-box:selected>*.box>*.mark {
63 | -fx-background-color: -swatch-500;
64 | -fx-shape: "M 10,5 c 5.79899,0 10.5,4.701 10.5,10.5 0,5.799 -4.70101,10.5 -10.5,10.5 -5.79899,0 -10.5,-4.701 -10.5,-10.5 0,-5.799 4.70101,-10.5 10.5,-10.5 z m -29.455078,10.6875 0,0.1348 -0.08984,0 0,-0.1348 z";
65 | }
66 |
67 | .check-box:indeterminate>*.box>*.mark {
68 | -fx-background-color: white;
69 | -fx-shape: "M 20 0 C 14.20101 0 9.5 4.701 9.5 10.5 C 9.5 16.299 14.20101 21 20 21 C 25.79899 21 30.5 16.299 30.5 10.5 C 30.5 4.701 25.79899 0 20 0 z M 0 10.6875 L 0 10.822266 L 0.08984375 10.822266 L 0.08984375 10.6875 L 0 10.6875 z M 40.066406 10.900391 A 0.080000006 0.050000001 0 0 0 40 10.949219 A 0.080000006 0.050000001 0 0 0 40.080078 11 A 0.080000006 0.050000001 0 0 0 40.160156 10.949219 A 0.080000006 0.050000001 0 0 0 40.080078 10.900391 A 0.080000006 0.050000001 0 0 0 40.066406 10.900391 z ";
70 | }
71 |
72 | .check-box:disabled>*.box>*.mark {
73 | -fx-background-color: grey;
74 | }
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/out/production/Apktool_GUI/styles/materialfx-toggleswitch.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: com.bittle.apktoolfx.Main
3 |
4 |
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/LOGGER.java:
--------------------------------------------------------------------------------
1 | package com.bittle.apktoolfx;
2 |
3 | import brut.androlib.MainLogger;
4 | import javafx.application.Platform;
5 | import javafx.scene.control.ScrollPane;
6 | import javafx.scene.text.Text;
7 | import javafx.scene.text.TextFlow;
8 |
9 | public class LOGGER extends MainLogger {
10 |
11 | private static LOGGER instance = null;
12 |
13 | public static LOGGER getInstance(){
14 | if(instance == null)
15 | instance = new LOGGER();
16 | return instance;
17 | }
18 |
19 | private static TextFlow log_text_area;
20 | private static ScrollPane log_scroll_pane;
21 |
22 | public static void setGUIVars(TextFlow area, ScrollPane pane) {
23 | log_text_area = area;
24 | log_scroll_pane = pane;
25 | }
26 |
27 | @Override
28 | public void ERROR(Object msg) {
29 | if(msg.toString().contains("-f")){
30 | msg = msg.toString().replace("-f", "force");
31 | }
32 | if (!msg.toString().trim().isEmpty())
33 | appendToTextArea(msg + "\n", "error_text");
34 | }
35 |
36 | @Override
37 | public void SEVERE(Object msg) {
38 | if (!msg.toString().trim().isEmpty())
39 | appendToTextArea(msg + "\n", "severe_text");
40 | }
41 |
42 | @Override
43 | public void SEVERE(Object msg, Exception e) {
44 | if (!msg.toString().trim().isEmpty())
45 | appendToTextArea(msg + ", " + e + "\n", "severe_text");
46 | }
47 |
48 | @Override
49 | public void WARNING(Object msg) {
50 | if (!msg.toString().trim().isEmpty())
51 | appendToTextArea(msg + "\n", "error_text");
52 | }
53 |
54 | @Override
55 | public void WARNING(Object msg, Exception e) {
56 | if (!msg.toString().trim().isEmpty())
57 | appendToTextArea(msg + ", " + e + "\n", "warning_text");
58 | }
59 |
60 | @Override
61 | public void NORMAL(Object msg) {
62 | if (!msg.toString().trim().isEmpty())
63 | appendToTextArea(msg + "\n", "normal_text");
64 | }
65 |
66 | @Override
67 | public void INFO(Object msg) {
68 | if (!msg.toString().trim().isEmpty())
69 | appendToTextArea("I: " + msg + "\n", "info_text");
70 | }
71 |
72 | @Override
73 | public void FINE(Object msg) {
74 | if (!msg.toString().trim().isEmpty())
75 | appendToTextArea(msg + "\n", "fine_text");
76 | }
77 |
78 | private double prev = 0;
79 | private void appendToTextArea(Object a, String id) {
80 | // need thread to update log view
81 | Platform.runLater(() -> {
82 | Text text = new Text(a.toString());
83 |
84 | text.setId(id);
85 | log_text_area.getChildren().add(text);
86 |
87 | if(prev == 0 && log_text_area.getHeight() > 0.0){
88 | prev = log_text_area.getHeight();
89 | }
90 |
91 | if(log_text_area.getHeight() > prev){
92 | log_scroll_pane.setVvalue(1.0);
93 | }
94 | });
95 | }
96 | }
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/Main.java:
--------------------------------------------------------------------------------
1 | package com.bittle.apktoolfx;
2 |
3 | import brut.androlib.MainLogger;
4 | import javafx.application.Application;
5 | import javafx.fxml.FXMLLoader;
6 | import javafx.scene.Parent;
7 | import javafx.scene.Scene;
8 | import javafx.stage.Stage;
9 |
10 | public class Main extends Application {
11 | @Override
12 | public void start(Stage primaryStage) throws Exception{
13 | MainLogger.getInstance().setLogger(LOGGER.getInstance());
14 |
15 | FXMLLoader fxml = new FXMLLoader(getClass().getResource("MainFXML.fxml"));
16 | Parent root = fxml.load();
17 | primaryStage.setTitle("Apktool GUI");
18 | primaryStage.setScene(new Scene(root, 600, 400));
19 | primaryStage.show();
20 | }
21 |
22 |
23 | public static void main(String[] args) {
24 | launch(args);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/MainFXML.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/controllers/CompileController.java:
--------------------------------------------------------------------------------
1 | package com.bittle.apktoolfx.controllers;
2 |
3 | import com.bittle.apktoolfx.LOGGER;
4 | import javafx.concurrent.Task;
5 | import javafx.fxml.FXML;
6 | import javafx.scene.input.DragEvent;
7 | import javafx.scene.input.Dragboard;
8 |
9 | import java.io.File;
10 |
11 | public class CompileController extends Controller {
12 | private String current_folder_path;
13 |
14 | @FXML
15 | public void drag_dropped(DragEvent event) {
16 | try {
17 | Dragboard board = event.getDragboard();
18 | File file = board.getFiles().get(0);
19 |
20 | if (file.isDirectory()) {
21 | // folder dragged in
22 | current_folder_path = file.getAbsolutePath();
23 | main_text_field.setText(file.getPath());
24 |
25 | LOGGER.setGUIVars(log_text_area, log_scroll_pane);
26 | LOGGER.getInstance().INFO("File dropped: " + file.getAbsolutePath());
27 | }
28 | } catch (Exception e) {
29 | LOGGER.getInstance().ERROR(e.toString());
30 | }
31 | }
32 |
33 | public void main_button_click() {
34 | LOGGER.setGUIVars(log_text_area, log_scroll_pane);
35 |
36 | if (main_text_field.getText().trim().isEmpty()) {
37 | LOGGER.getInstance().ERROR("Folder field cannot be empty");
38 | return;
39 | }
40 |
41 | Task task = new Task() {
42 | @Override
43 | protected Void call() throws Exception {
44 | // include any options
45 | String params = "b ";
46 | if (force_checkbox.isSelected())
47 | params += " -f ";
48 |
49 | String[] p = params.split("\\s+");
50 | p = append(p, current_folder_path);
51 |
52 | // add the output directory to the end
53 | if (!output_dir_text.getText().isEmpty() &&
54 | !output_dir_text.getText().toLowerCase().equals("no directory selected")) {
55 |
56 | p = append(p, "-o");
57 | p = append(p, output_dir_text.getText());
58 |
59 | }
60 |
61 | brut.apktool.Main.main(p);
62 | LOGGER.getInstance().NORMAL("-----------------------------------------------");
63 | return null;
64 | }
65 | };
66 |
67 | Thread thread = new Thread(task);
68 | thread.setDaemon(true);
69 | thread.start();
70 |
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/controllers/Controller.java:
--------------------------------------------------------------------------------
1 | package com.bittle.apktoolfx.controllers;
2 |
3 | import javafx.fxml.FXML;
4 | import javafx.fxml.Initializable;
5 | import javafx.scene.control.*;
6 | import javafx.scene.input.DragEvent;
7 | import javafx.scene.input.Dragboard;
8 | import javafx.scene.input.TransferMode;
9 | import javafx.scene.text.Text;
10 | import javafx.scene.text.TextFlow;
11 | import javafx.stage.DirectoryChooser;
12 |
13 | import java.io.File;
14 | import java.net.URL;
15 | import java.util.ResourceBundle;
16 |
17 | // min methods and fields controllers should have
18 | public abstract class Controller implements Initializable {
19 | @FXML
20 | public TextField main_text_field;
21 |
22 | @FXML
23 | public Button main_button;
24 |
25 | @FXML
26 | public TextFlow log_text_area;
27 |
28 | @FXML
29 | public ScrollPane log_scroll_pane;
30 |
31 | @FXML
32 | public Text output_dir_text;
33 |
34 | @FXML
35 | public CheckBox force_checkbox;
36 |
37 | public void initialize(URL url, ResourceBundle bundle) {
38 | log_scroll_pane.setFitToWidth(true);
39 | }
40 |
41 | @FXML
42 | public void drag_over(DragEvent event) {
43 | Dragboard board = event.getDragboard();
44 | if (board.hasFiles()) {
45 | event.acceptTransferModes(TransferMode.ANY);
46 | }
47 | }
48 |
49 | public void change_output_dir_click() {
50 | Alert alert = new Alert(Alert.AlertType.WARNING);
51 | alert.setTitle("Warning");
52 | alert.setContentText("All chosen folder contents will be erased!");
53 |
54 | alert.showAndWait();
55 | directoryChooser();
56 | }
57 |
58 | private void directoryChooser() {
59 | DirectoryChooser directoryChooser = new DirectoryChooser();
60 | File selectedDirectory =
61 | directoryChooser.showDialog(null);
62 |
63 | if (selectedDirectory == null) {
64 | output_dir_text.setText("No Directory selected");
65 | } else {
66 | output_dir_text.setText(selectedDirectory.getAbsolutePath());
67 | }
68 | }
69 |
70 | // helper method
71 | public String[] append(String[] arr, String a) {
72 | String[] temp = new String[arr.length + 1];
73 | System.arraycopy(arr, 0, temp, 0, arr.length);
74 | temp[arr.length] = a;
75 |
76 | return temp;
77 | }
78 |
79 | // these methods could be different
80 | @FXML
81 | public abstract void drag_dropped(DragEvent event);
82 |
83 | @FXML
84 | public abstract void main_button_click();
85 | }
86 |
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/controllers/DecompileController.java:
--------------------------------------------------------------------------------
1 | package com.bittle.apktoolfx.controllers;
2 |
3 | import com.bittle.apktoolfx.LOGGER;
4 | import javafx.concurrent.Task;
5 | import javafx.fxml.FXML;
6 | import javafx.scene.control.*;
7 | import javafx.scene.input.DragEvent;
8 | import javafx.scene.input.Dragboard;
9 |
10 | import java.io.File;
11 |
12 | public class DecompileController extends Controller {
13 |
14 | // checkbox settings
15 | @FXML
16 | CheckBox no_res_checkbox;
17 | @FXML
18 | CheckBox no_src_checkbox;
19 |
20 | // apk vars
21 | private String current_apk_path = "";
22 |
23 | @FXML
24 | public void drag_dropped(DragEvent event) {
25 | try {
26 | Dragboard board = event.getDragboard();
27 | File file = board.getFiles().get(0);
28 |
29 | if (file.getName().endsWith(".apk")) {
30 | // apk file dragged in
31 | current_apk_path = file.getAbsolutePath();
32 | main_text_field.setText(file.getName());
33 |
34 | LOGGER.setGUIVars(log_text_area, log_scroll_pane);
35 | LOGGER.getInstance().FINE("File dropped: " + file.getAbsolutePath());
36 | }
37 | } catch (Exception e) {
38 | LOGGER.getInstance().ERROR(e.toString());
39 | }
40 | }
41 |
42 | @FXML
43 | public void main_button_click() {
44 | LOGGER.setGUIVars(log_text_area, log_scroll_pane);
45 |
46 | if (main_text_field.getText().trim().isEmpty()) {
47 | LOGGER.getInstance().ERROR("APK text field cannot be empty");
48 | return;
49 | }
50 |
51 | Task task = new Task() {
52 | @Override
53 | protected Void call() throws Exception {
54 | // include any options
55 | String params = "d ";
56 | if (force_checkbox.isSelected())
57 | params += " -f ";
58 | if (no_res_checkbox.isSelected())
59 | params += " -r ";
60 | if (no_src_checkbox.isSelected())
61 | params += " -s ";
62 | String[] p = params.split("\\s+");
63 | p = append(p, current_apk_path);
64 |
65 | // add the output directory to the end
66 | if (!output_dir_text.getText().isEmpty() &&
67 | !output_dir_text.getText().toLowerCase().equals("no directory selected")) {
68 |
69 | p = append(p, "-o");
70 | p = append(p, output_dir_text.getText());
71 |
72 | }
73 |
74 | brut.apktool.Main.main(p);
75 | LOGGER.getInstance().NORMAL("-----------------------------------------------");
76 | return null;
77 | }
78 | };
79 |
80 | Thread thread = new Thread(task);
81 | thread.setDaemon(true);
82 | thread.start();
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/fxml/CompileTabPage.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/src/com/bittle/apktoolfx/fxml/DecompileTabPage.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/src/styles/material.css:
--------------------------------------------------------------------------------
1 | /*
2 | * The MIT License (MIT)
3 | *
4 | * Copyright (c) 2015 - AGIX | Innovative Engineering
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the "Software"), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | *
24 | */
25 |
26 | /*
27 | * This is a Material Design CSS for JavaFX
28 | */
29 |
30 | /*******************************************************************************
31 | * *
32 | * Root *
33 | * *
34 | ******************************************************************************/
35 | .root {
36 | /* Swatch Colors - Blue*/
37 | -swatch-100: #BBDEFB;
38 | -swatch-200: #90CAF9;
39 | -swatch-300: #64BEF6;
40 | -swatch-400: #42A5F5;
41 | -swatch-500: #2196F3;
42 | /*default text */
43 | -fx-text-base-color: rgb(100.0, 100.0, 100.0);
44 | -fx-text-button-normal: -swatch-500;
45 | -fx-text-button-colored: rgb(255.0, 255.0, 255.0);
46 | -fx-text-button-text: rgb(100.0, 100.0, 100.0);
47 | -fx-text-title-color: rgb(45.0, 45.0, 45.0);
48 | -fx-text-subtitle-color: rgb(65.0, 65.0, 65.0);
49 | -fx-text-control-title-color: rgb(130.0, 130.0, 130.0);
50 | -fx-text-fill: -fx-text-base-color;
51 | -dark: rgb(47.0, 52.0, 57.0);
52 | -light: rgb(238, 238, 238);
53 | -fx-background-color: -light;
54 | /*default font */
55 | -fx-font-family: 'Roboto Medium';
56 | -fx-font-size: 14.0px;
57 | -fx-disabled-opacity: 0.6;
58 | /*default colors */
59 | -swatch-grey: rgb(200.0, 200.0, 200.0);
60 | -swatch-dark-grey: rgb(150.0, 150.0, 150.0);
61 | -swatch-light-grey: rgb(230.0, 230.0, 230.0);
62 | -swatch-toolbar: rgb(245.0, 245.0, 245.0);
63 | -swatch-toolbar-selected: rgb(215.0, 215.0, 215.0);
64 | /*
65 | Modena colors
66 | */
67 | -fx-dark-text-color: white; /* Text color when selected*/
68 | -fx-mid-text-color: -fx-text-base-color;
69 | -fx-light-text-color: -swatch-light-grey;
70 | -fx-body-color: white;
71 | /* A bright blue for the focus indicator of objects. Typically used as the
72 | * first color in -fx-background-color for the "focused" pseudo-class. Also
73 | * typically used with insets of -1.4 to provide a glowing effect.
74 | */
75 | -fx-focus-color: -swatch-400;
76 | -fx-faint-focus-color: -swatch-200;
77 | /* A bright blue for highlighting/accenting objects. For example: selected
78 | * text; selected items in menus, lists, trees, and tables; progress bars */
79 | -fx-accent: -swatch-400;
80 | -fx-dark-text-color: white;
81 | }
82 |
83 | /*******************************************************************************
84 | * *
85 | * Material Design - Cards *
86 | * *
87 | ******************************************************************************/
88 | .card {
89 | -fx-background-color: rgb(255.0, 255.0, 255.0);
90 | -fx-background-radius: 4.0;
91 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.15), 6.0, 0.7, 0.0,
92 | 1.5);
93 | -fx-padding: 16 16 16 16;
94 | }
95 |
96 | .card-title {
97 | -fx-font-size: 20.0px;
98 | -fx-padding: 5 0 5 0;
99 | }
100 |
101 | .card-title .text {
102 | -fx-fill: -fx-text-title-color;
103 | }
104 |
105 | .card-subtitle {
106 | -fx-font-size: 16.0px;
107 | -fx-padding: 5 0 5 0;
108 | }
109 |
110 | .card-subtitle .text {
111 | -fx-fill: -fx-text-subtitle-color;
112 | }
113 |
114 | .control-label {
115 | -fx-font-size: 12.0px;
116 | -fx-padding: 16 0 0 0;
117 | }
118 |
119 | .control-label .text {
120 | -fx-fill: -fx-text-control-title-color;
121 | }
122 |
123 | .card-button {
124 | -fx-effect: null;
125 | }
126 |
127 | /*******************************************************************************
128 | * *
129 | * Button & ToggleButton *
130 | * *
131 | ******************************************************************************/
132 | .button-raised {
133 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.30), 6.0, 0.3, 0,
134 | 1);
135 | -fx-background-color: rgb(250, 250, 250);
136 | }
137 |
138 | .button-flat {
139 | -fx-effect: null;
140 | -fx-background-color: transparent;
141 | }
142 |
143 | .toggle-button, .button {
144 | -fx-text-fill: -fx-text-button-normal;
145 | -fx-font-family: 'Roboto';
146 | -fx-font-weight: bold;
147 | -fx-background-insets: 0.0;
148 | -fx-background-radius: 4.0;
149 | -fx-padding: 0.7em;
150 | -fx-alignment: CENTER;
151 | }
152 |
153 | .button-raised .button .text, .button-flat .button .text {
154 | -fx-text-weight: Bold;
155 | }
156 |
157 | .button:default {
158 | -fx-background-color: -swatch-500;
159 | -fx-text-fill: -fx-text-button-colored;
160 | }
161 |
162 | .toggle-button:focused, .button:focused, .button:default:focused {
163 | -fx-background-color: -swatch-light-grey;
164 | }
165 |
166 | .toggle-button:focused:selected {
167 | -fx-background-color: derive(-swatch-500, 50.0%),
168 | derive(-swatch-500, -20.0%);
169 | -fx-background-insets: 0.0, 0.2em;
170 | -fx-text-fill: -fx-text-button-colored;
171 | }
172 |
173 | .toggle-button:armed, .toggle-button:selected, .button:armed, .button:default:armed
174 | {
175 | -fx-background-color: -swatch-grey;
176 | -fx-text-fill: -fx-text-button-colored;
177 | }
178 |
179 | .icon-button {
180 | -fx-background-color: transparent;
181 | -fx-pref-height: 42;
182 | -fx-pref-width: 42;
183 | -fx-min-height: 42;
184 | -fx-min-width: 42;
185 | -fx-padding: 0;
186 | }
187 |
188 | .icon-button .text {
189 | -fx-font-family: 'MaterialDesignIconicFont';
190 | -fx-font-size: 24px;
191 | }
192 |
193 | /*******************************************************************************
194 | * *
195 | * ComboBox, ChoiceBox COMMON *
196 | * *
197 | ******************************************************************************/
198 | .combo-box-base, .choice-box {
199 | -fx-background-color: transparent;
200 | -fx-border-color: -swatch-grey;
201 | -fx-border-width: 0 0 2 0;
202 | -fx-background-radius: 0;
203 | -fx-border-radius: 0;
204 | }
205 |
206 | .combo-box:focused, .choice-box:focused {
207 | -fx-border-color: -swatch-500;
208 | }
209 |
210 | .combo-box-base>.label, .choice-box>.label {
211 | -fx-padding: 0.7em 0.7em 0.7em 0em;
212 | }
213 |
214 | .combo-box-base>.arrow-button, .choice-box>.open-button {
215 | -fx-padding: 1.2em 0.7em 1.2em 0.5em;
216 | -fx-background-radius: 0.0 2.0 2.0 0.0;
217 | }
218 |
219 | .combo-box-base>.arrow-button>.arrow, .choice-box>.open-button>.arrow {
220 | -fx-background-color: -swatch-grey;
221 | }
222 |
223 | .combo-box-base .arrow-button:hover .arrow, .spinner .increment-arrow-button:hover .increment-arrow,
224 | .spinner .decrement-arrow-button:hover .decrement-arrow {
225 | -fx-background-color: -swatch-dark-grey;
226 | }
227 |
228 | .button-bar .button{
229 | -fx-padding: 5 5 5 5;
230 | }
231 |
232 | .menu-item:focused {
233 | -fx-background-color: -swatch-light-grey;
234 | }
235 |
236 | /*******************************************************************************
237 | * *
238 | * CheckBox *
239 | * *
240 | ******************************************************************************/
241 | .check-box {
242 | -fx-padding: 10;
243 | }
244 |
245 | .check-box .text {
246 | -fx-fill: -fx-text-base-color;
247 | }
248 |
249 | .check-box>.box, .check-box>.box.unfocused, .check-box:disabled>.box,
250 | .check-box:indeterminate>.box {
251 | -fx-border-radius: 4.0;
252 | -fx-border-color: -swatch-grey;
253 | -fx-border-width: 2;
254 | -fx-background-radius: 4;
255 | -fx-background-color: transparent;
256 | -fx-padding: 1;
257 | }
258 |
259 | .check-box:selected>.box {
260 | /*-fx-border-color: -swatch-500;*/
261 | -fx-background-color: -swatch-500;
262 | }
263 |
264 | .check-box:focused>.box {
265 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.30), 2.0, 0.3, 0,
266 | 0);
267 | }
268 |
269 | .check-box:selected>.box {
270 | -fx-background-color: white;
271 | }
272 |
273 | .check-box:indeterminate>.box {
274 | -fx-background-color: -swatch-grey;
275 | -fx-padding: 0.45em;
276 | }
277 |
278 | /*******************************************************************************
279 | * *
280 | * ChoiceBox *
281 | * *
282 | ******************************************************************************/
283 | .context-menu {
284 | -fx-background-color: rgb(255.0, 255.0, 255.0, 0.95);
285 | -fx-background-radius: 2.0;
286 | }
287 |
288 | .radio-menu-item, .check-menu-item {
289 | -fx-padding: 0.7em 0.7em 0.7em 0em;
290 | }
291 |
292 | .radio-menu-item:checked .label, .check-menu-item:checked .label {
293 | -fx-text-fill: -swatch-500;
294 | }
295 |
296 | .radio-menu-item:checked>.left-container>.radio, .check-menu-item:checked>.left-container>.check
297 | {
298 | -fx-background-color: -swatch-dark-grey;
299 | -fx-padding: 0.68em 0.5em 0.0em 0.0em;
300 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.2), 0.0, 0.0, 0.0,
301 | 1.0);
302 | }
303 |
304 | .radio-menu-item>.left-container>.radio, .check-menu-item>.left-container>.check
305 | {
306 | -fx-background-color: transparent;
307 | -fx-padding: 0.68em 0.68em 0.0em 0.0em;
308 | }
309 |
310 | /*******************************************************************************
311 | * *
312 | * ComboBox *
313 | * *
314 | ******************************************************************************/
315 | .combo-box .list-cell {
316 | -fx-padding: 0.7em 0.7em 0.7em 0em;
317 | }
318 |
319 | .popup-overlay {
320 | -fx-background-color: white;
321 | -fx-border-color: -swatch-grey;
322 | -fx-border-width: 0 0 2 0;
323 | -fx-background-radius: 0;
324 | -fx-border-radius: 0;
325 | }
326 |
327 | .title-bar {
328 | -fx-padding: 10;
329 | }
330 |
331 | .title-bar .icon {
332 | -fx-alignment: center-left;
333 | -fx-effect: dropshadow(gaussian, rgb(0.0, 0.0, 0.0, 0.2), 0.0, 0.0, 0.0,
334 | 1.0);
335 | }
336 |
337 | .title-bar .title-label {
338 | -fx-padding: 0 10 0 10;
339 | -fx-alignment: center;
340 | -fx-font-size: 36;
341 | -fx-font-weight: bolder;
342 | }
343 |
344 | .content-area {
345 | -fx-background-color: -dark;
346 | }
347 |
348 | .content-background {
349 | -fx-background-color: white;
350 | -fx-background-radius: 0.0 0.0 11.0 11.0;
351 | -fx-padding: 0 10 10 10;
352 | }
353 |
354 | /*******************************************************************************
355 | * *
356 | * Date Picker *
357 | * *
358 | ******************************************************************************/
359 | .date-picker-popup .button {
360 | -fx-background-color: -swatch-500;
361 | }
362 |
363 | .date-picker-popup>.month-year-pane {
364 | -fx-background-color: -swatch-500;
365 | }
366 |
367 | .date-picker-popup>*>.spinner>.button>.left-arrow, .date-picker-popup>*>.spinner>.button>.right-arrow
368 | {
369 | -fx-background-color: white;
370 | }
371 |
372 | .date-picker-popup>*>.spinner {
373 | -fx-border-width: 0;
374 | }
375 |
376 | .date-picker-popup>*>.spinner>.label {
377 | -fx-text-fill: white;
378 | -fx-font-weight: bold;
379 | }
380 |
381 | .date-picker-popup>*>.day-name-cell, .date-picker-popup>*>.week-number-cell
382 | {
383 | -fx-font-weight: normal;
384 | -fx-text-fill: -swatch-dark-grey;
385 | -fx-font-size: 1em;
386 | }
387 |
388 | /*******************************************************************************
389 | * *
390 | * Date picker *
391 | * *
392 | ******************************************************************************/
393 | .date-picker .arrow-button {
394 | -fx-background-color: transparent;
395 | }
396 |
397 | .date-picker .arrow-button .arrow {
398 | -fx-background-insets: -4;
399 | }
400 |
401 | .date-picker .date-picker-display-node {
402 | -fx-border-width: 0;
403 | }
404 |
405 | /*******************************************************************************
406 | * *
407 | * HTML Editor *
408 | * *
409 | ******************************************************************************/
410 | .html-editor {
411 | -fx-background-color: white;
412 | -fx-border-width: 2 0 2 0;
413 | -fx-border-color: -swatch-grey;
414 | }
415 |
416 | .html-editor .web-view {
417 | -fx-border-color: grey;
418 | -fx-border-width: grey;
419 | }
420 |
421 | .web-view {
422 | -fx-font-smoothing-type: gray;
423 | }
424 |
425 | /*******************************************************************************
426 | * *
427 | * Label *
428 | * *
429 | ******************************************************************************/
430 | .label {
431 | -fx-text-fill: -fx-text-base-color;
432 | }
433 |
434 | .label:disabled {
435 | -fx-opacity: -fx-disabled-opacity;
436 | }
437 |
438 | .label:show-mnemonics>.mnemonic-underline {
439 | -fx-stroke: -fx-text-base-color;
440 | }
441 |
442 | /*******************************************************************************
443 | * *
444 | * List, Tree, Table COMMON *
445 | * *
446 | ******************************************************************************/
447 | .list-view:focused .list-cell:filled:focused:selected {
448 | -fx-background-color: -swatch-light-grey;
449 | -fx-text-fill: -swatch-500;
450 | }
451 |
452 | .list-view:hover .list-cell:hover {
453 | -fx-background-color: -swatch-light-grey;
454 | -fx-text-fill: -fx-text-base-color;
455 | }
456 |
457 | .list-cell {
458 | -fx-cell-size: 40;
459 | }
460 |
461 | /*******************************************************************************
462 | * *
463 | * ProgressBar *
464 | * *
465 | ******************************************************************************/
466 | .progress-bar>.track {
467 | -fx-background-color: derive(-swatch-grey, 50.0%);
468 | -fx-background-radius: 2.0;
469 | -fx-padding: 0.0;
470 | }
471 |
472 | .progress-bar>.bar {
473 | -fx-background-color: -swatch-500;
474 | -fx-background-radius: 2.0;
475 | -fx-background-insets: 0.0;
476 | -fx-border-width: 0.0;
477 | -fx-effect: null;
478 | }
479 |
480 | .progress-bar:indeterminate>.bar {
481 | -fx-background-color: derive(-swatch-500, 50.0%);
482 | -fx-background-radius: 2.0;
483 | -fx-background-insets: 0.0;
484 | -fx-border-width: 0.0;
485 | -fx-effect: null;
486 | }
487 |
488 | /*******************************************************************************
489 | * *
490 | * ProgressIndicator *
491 | * *
492 | ******************************************************************************/
493 | .progress-indicator>.spinner {
494 | -fx-border-width: 0;
495 | }
496 |
497 | .progress-indicator>.determinate-indicator>.indicator {
498 | -fx-background-color: rgb(255.0, 255.0, 255.0, 0.5);
499 | -fx-padding: 0.0;
500 | }
501 |
502 | .progress-indicator>.determinate-indicator>.progress {
503 | -fx-background-color: -swatch-500;
504 | }
505 |
506 | .progress-indicator>.determinate-indicator>.percentage {
507 | -fx-fill: -fx-text-base-color;
508 | -fx-translate-y: 0em;
509 | -fx-padding: 0.0;
510 | -fx-font-size: 11px;
511 | }
512 |
513 | /*******************************************************************************
514 | * *
515 | * RadioButton *
516 | * *
517 | ******************************************************************************/
518 | .radio-button {
519 | -fx-padding: 10;
520 | }
521 |
522 | .radio-button .text {
523 | -fx-fill: -fx-text-base-color;
524 | }
525 |
526 | .radio-button>.radio, .radio-button>.radio.unfocused, .radio-button:disabled>.radio,
527 | .radio-button:selected>.radio {
528 | -fx-border-radius: 100.0;
529 | -fx-border-color: -swatch-grey;
530 | -fx-border-width: 2;
531 | -fx-background-radius: 100;
532 | -fx-background-color: transparent;
533 | -fx-padding: 3 3 3 3;
534 | }
535 |
536 | .radio-button:focused>.radio {
537 | -fx-background-color: -swatch-100;
538 | }
539 |
540 | .radio-button:focused:armed>.radio {
541 | -fx-background-color: -swatch-100;
542 | }
543 |
544 | .radio-button:selected>.radio>.dot {
545 | -fx-background-color: -swatch-500;
546 | -fx-background-insets: 0;
547 | }
548 |
549 | /*******************************************************************************
550 | * *
551 | * Separators *
552 | * *
553 | ******************************************************************************/
554 | .separator {
555 | -fx-padding: 16 -16 16 -16;
556 | }
557 |
558 | /*******************************************************************************
559 | * *
560 | * Scroll Bar *
561 | * *
562 | ******************************************************************************/
563 | .scroll-bar:vertical>.track-background, .scroll-bar:horizontal>.track-background
564 | {
565 | -fx-background-color: -swatch-light-grey;
566 | -fx-background-insets: 0.0;
567 | }
568 |
569 | .scroll-bar:vertical>.thumb, .scroll-bar:horizontal>.thumb {
570 | -fx-background-color: -swatch-grey;
571 | -fx-background-insets: 0.0;
572 | -fx-background-radius: 4.0;
573 | }
574 |
575 | .scroll-bar>.increment-button, .scroll-bar>.decrement-button,
576 | .scroll-bar:hover>.increment-button, .scroll-bar:hover>.decrement-button
577 | {
578 | -fx-background-color: transparent;
579 | }
580 |
581 | .scroll-bar>.increment-button>.increment-arrow, .scroll-bar>.decrement-button>.decrement-arrow
582 | {
583 | -fx-background-color: -swatch-dark-grey;
584 | }
585 |
586 | .scroll-bar>.track-background {
587 | -fx-background-color: transparent;
588 | }
589 |
590 | /*******************************************************************************
591 | * *
592 | * Slider *
593 | * *
594 | ******************************************************************************/
595 | .slider {
596 | -fx-padding: 10 0 10 0;
597 | }
598 |
599 | .slider:vertical {
600 | -fx-padding: 0 10 0 10;
601 | }
602 |
603 | .slider>.track {
604 | -fx-background-color: -swatch-grey;
605 | -fx-background-insets: 1.5;
606 | }
607 |
608 | .slider>.thumb {
609 | -fx-background-color: -swatch-500;
610 | }
611 |
612 | /*******************************************************************************
613 | * *
614 | * Spinner *
615 | * *
616 | ******************************************************************************/
617 | .spinner {
618 | -fx-background-color: transparent;
619 | -fx-border-width: 0 0 2 0;
620 | -fx-border-color: -swatch-grey;
621 | }
622 |
623 | .spinner:focused {
624 | -fx-border-color: -swatch-500;
625 | }
626 |
627 | .spinner .text-field {
628 | -fx-background-color: transparent;
629 | -fx-background-radius: 0;
630 | -fx-border-width: 0;
631 | -fx-padding: 0.5em 0.5em 0.5em 0.1em;
632 | -fx-prompt-text-fill: derive(-dark, 50.0%);
633 | -fx-highlight-fill: rgb(94.0, 203.0, 234.0);
634 | }
635 |
636 | .spinner .increment-arrow-button, .spinner .decrement-arrow-button {
637 | -fx-background-color: transparent;
638 | -fx-fill: swatch-500;
639 | }
640 |
641 | .spinner .increment-arrow-button .increment-arrow, .spinner .decrement-arrow-button .decrement-arrow
642 | {
643 | -fx-background-color: -swatch-grey;
644 | }
645 |
646 | .spinner .increment-arrow-button, .spinner .decrement-arrow-button {
647 | -fx-background-color: transparent;
648 | -fx-fill: swatch-500;
649 | }
650 |
651 | /*******************************************************************************
652 | * *
653 | * Tables *
654 | * *
655 | ******************************************************************************/
656 | .table-view, .tree-table-view {
657 | /* Constants used throughout the tableview. */
658 | -fx-table-header-border-color: transparent;
659 | -fx-table-cell-border-color: -fx-box-border; /* Horizontal Lines*/
660 | -fx-background-color: transparent;
661 | }
662 |
663 | /* The column header row is made up of a number of column-header, one for each
664 | TableColumn, and a 'filler' area that extends from the right-most column
665 | to the edge of the tableview, or up to the 'column control' button. */
666 | .table-view .filler, .tree-table-view .filler, .table-view .column-header,
667 | .tree-table-view .column-header {
668 | -fx-size: 65;
669 | -fx-border-style: null;
670 | -fx-border-color: -swatch-grey;
671 | -fx-border-width: 0 0 2 0;
672 | -fx-background-color: transparent;
673 | }
674 |
675 | .table-view .show-hide-columns-button, .tree-table-view .show-hide-columns-button
676 | {
677 | -fx-background-color: transparent;
678 | }
679 |
680 | .table-view .column-header .label, .table-view .filler .label,
681 | .table-view .column-drag-header .label, .tree-table-view .column-header .label,
682 | .tree-table-view .filler .label, .tree-table-view .column-drag-header .label
683 | {
684 | -fx-alignment: CENTER_LEFT;
685 | }
686 |
687 | .table-view .column-header-background, .tree-table-view .column-header-background
688 | {
689 | -fx-background-color: transparent;
690 | }
691 |
692 | .table-row-cell, .tree-table-row-cell {
693 | -fx-cell-size: 40px;
694 | }
695 |
696 | .table-cell {
697 | -fx-border-color: transparent; /* Vertical Lines*/
698 | -fx-border-width: 1;
699 | }
700 |
701 | /*******************************************************************************
702 | * *
703 | * Text, Text field & Text area *
704 | * *
705 | ******************************************************************************/
706 | .text {
707 | -fx-font-smoothing-type: gray;
708 | }
709 |
710 | .text-area, .text-field, .text{
711 | -fx-background-color: transparent;
712 | -fx-background-radius: 2.0;
713 | -fx-padding: 0.5em 0.5em 0.5em 0.1em;
714 | -fx-border-color: -swatch-grey;
715 | -fx-border-width: 0 0 2 0;
716 | -fx-prompt-text-fill: derive(-dark, 50.0%);
717 | -fx-highlight-fill: rgb(94.0, 203.0, 234.0);
718 | }
719 |
720 | .text-area .text, .text-field>*>.text {
721 | -fx-effect: null;
722 | -fx-fill: -dark;
723 | }
724 |
725 | .text-area {
726 | -fx-padding: 0.15em;
727 | }
728 |
729 | .text-area .content {
730 | -fx-padding: 0.7em;
731 | -fx-border-width: 0.0;
732 | -fx-background-color: transparent;
733 | }
734 |
735 | .text-area:focused .content {
736 | -fx-background-color: transparent;
737 | }
738 |
739 | .text-area:focused, .text-field:focused {
740 | -fx-border-color: -swatch-500;
741 | }
742 |
743 | /*******************************************************************************
744 | * *
745 | * Tool bar & Menu bar *
746 | * *
747 | ******************************************************************************/
748 | .tool-bar, .menu-bar { /* top */
749 | -fx-background-color: -swatch-toolbar;
750 | -fx-border-width: 0 0 2 0;
751 | -fx-border-color: -swatch-grey;
752 | -fx-min-height: 48;
753 | -fx-alignment: CENTER_LEFT;
754 | }
755 |
756 | .tool-bar .label {
757 | -fx-font-size: 18;
758 | }
759 |
760 | .tool-bar .combo-box-base, .menu-bar .combo-base {
761 | -fx-border-width: 0;
762 | }
763 |
764 | .tool-bar .button, .tool-bar .toggle-button {
765 | -fx-background-color: -swatch-toolbar;
766 | -fx-text-fill: -fx-text-base-color;
767 | -fx-pref-height: 42;
768 | -fx-pref-width: 42;
769 | -fx-min-height: 42;
770 | -fx-min-width: 42;
771 | -fx-padding: 0;
772 | -fx-background-radius: 0;
773 | }
774 |
775 | .tool-bar .button:pressed, .tool-bar .toggle-button:pressed, .tool-bar .toggle-button:selected
776 | {
777 | -fx-background-color: -swatch-grey;
778 | }
779 |
780 | .tool-bar .toggle-button {
781 | -fx-background-color: -swatch-toolbar;
782 | }
783 |
784 | .tool-bar .separator {
785 | -fx-padding: 5 10 5 10;
786 | }
787 |
788 | .toolbar-colored {
789 | -fx-background-color: -swatch-500;
790 | -fx-border-width: 0 0 2 0;
791 | -fx-border-color: -swatch-grey;
792 | }
793 |
794 | .toolbar-colored .button, .toolbar-colored .toggle-button {
795 | -fx-background-color: -swatch-500;
796 | -fx-text-fill: white;
797 | }
798 |
799 | .toolbar-colored .button:pressed, .toolbar-colored .toggle-button:pressed,
800 | .toolbar-colored .toggle-button:selected {
801 | -fx-background-color: -swatch-200;
802 | }
803 |
804 | .toolbar-colored .text {
805 | -fx-fill: white;
806 | }
807 |
808 | #error_text {
809 | -fx-fill: rgb(244,67,54);
810 | }
811 |
812 | #severe_text{
813 | -fx-fill: rgb(244,81,30);
814 | }
815 |
816 | #warning_text{
817 | -fx-fill: rgb(251,140,0);
818 | }
819 |
820 | #normal_text{
821 | -fx-fill: rgb(66,66,66);
822 | }
823 |
824 | #info_text{
825 | -fx-fill: rgb(41,182,246);
826 | }
827 |
828 | #fine_text{
829 | -fx-fill: rgb(46,125,50);
830 | }
831 |
--------------------------------------------------------------------------------