GROUP_BASE_SKINS_R0: skin-patch-24.04.2009.txt

File skin-patch-24.04.2009.txt, 60.6 KB (added by nenko, 14 years ago)
Line 
1### Eclipse Workspace Patch 1.0
2#P sophie2-platform
3Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/alignFramesTop.png
4===================================================================
5Cannot display: file marked as a binary type.
6svn:mime-type = application/octet-stream
7Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/alignFramesLeft.png
8===================================================================
9Cannot display: file marked as a binary type.
10svn:mime-type = application/octet-stream
11Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/useTemplateOn.png
12===================================================================
13Cannot display: file marked as a binary type.
14svn:mime-type = application/octet-stream
15Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/approve.png
16===================================================================
17Cannot display: file marked as a binary type.
18svn:mime-type = application/octet-stream
19Index: modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinManager.java
20===================================================================
21--- modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinManager.java        (revision 2334)
22+++ modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinManager.java        (working copy)
23@@ -4,11 +4,19 @@
24 import org.sophie2.core.prolib.interfaces.RwProp;
25 
26 /**
27+ * The Skin Manager. Used to decide which is the currently selected skin
28+ *
29+ * Use this class when you want to change the current skin for the application.
30+ * This can be done by setting the skin you want for currentSkin property
31+ *
32+ * Example :
33+ *     SkinManager().get().currentSkin().set(new SkinYouWant());
34+ *
35  * @author nenko, peko
36- *
37+ *
38  */
39-public class SkinManager extends BaseProObject{
40-       
41+public class SkinManager extends BaseProObject {
42+
43        /**
44         * The current Skin that is in use.
45         *
46@@ -17,49 +25,25 @@
47        public RwProp<Skin> currentSkin() {
48                return getBean().makeValueProp("currentSkin", Skin.class);
49        }
50-       
51-//     public Prop<Skin> defaultSkin() {
52-//             class defaultSkin extends AutoProperty<Skin> {
53-//                     
54-//                     @Override
55-//                     protected Skin compute() {
56-//                             Skin res = new Skin(SkinsNames.DEFAULT_NAME, null);
57-//                             return res;
58-//                     }
59-//             }
60-//             return getBean().makeProp(defaultSkin.class);
61-//     }
62-//     
63-//     public Prop<Skin> alternativeSkin() {
64-//             class alternativeSkin extends AutoProperty<Skin> {
65-//                     
66-//                     @Override
67-//                     protected Skin compute() {
68-//                             Skin res = new Skin(SkinsNames.ALTERNATIVE_NAME, defaultSkin().get());
69-//                             return res;
70-//                     }
71-//             }
72-//             return getBean().makeProp(alternativeSkin.class);
73-//     }
74-       
75-       //XXX: singleton
76-       private SkinManager () {
77-               //because it's singleton
78+
79+       // XXX: singleton
80+       private SkinManager() {
81+               // because it's singleton
82        }
83-       
84+
85        private static SkinManager instance = null;
86-       
87+
88        /**
89         * @return the one and only instance of the {@link SkinManager}.
90         */
91-       //XXX singleton
92+       // XXX singleton
93        public static SkinManager get() {
94                if (instance == null) {
95                        instance = new SkinManager();
96                        instance.currentSkin().set(new Skin(SkinsNames.DEFAULT_NAME, null));
97                }
98-               
99+
100                return instance;
101        }
102-       
103+
104 }
105Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/underlineOn.png
106===================================================================
107Cannot display: file marked as a binary type.
108svn:mime-type = application/octet-stream
109Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/multiSelectHaloOn.png
110===================================================================
111Cannot display: file marked as a binary type.
112svn:mime-type = application/octet-stream
113Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/alignFramesBottom.png
114===================================================================
115Cannot display: file marked as a binary type.
116svn:mime-type = application/octet-stream
117Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/pageHalo.png
118===================================================================
119Cannot display: file marked as a binary type.
120svn:mime-type = application/octet-stream
121Index: modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/skins/HackersSkinItem.java
122===================================================================
123--- modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/skins/HackersSkinItem.java      (revision 2334)
124+++ modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/skins/HackersSkinItem.java      (working copy)
125@@ -1,29 +0,0 @@
126-package org.sophie2.main.app.menus.skins;
127-
128-import org.sophie2.base.menus.MenuItem;
129-import org.sophie2.base.skins.Skin;
130-import org.sophie2.base.skins.SkinElementId;
131-import org.sophie2.base.skins.SkinManager;
132-import org.sophie2.base.skins.SkinsNames;
133-
134-/**
135- * A menu item to switch to the Hackers skin in Sophie2.
136- *
137- * @author peko, nenko
138- *
139- */
140-@SkinElementId("app.menus.skins.hackers-skin-item")
141-public class HackersSkinItem extends MenuItem {
142-
143-       @Override
144-       public void clicked() {
145-               SkinManager.get().currentSkin().set(
146-                               new Skin(SkinsNames.ALTERNATIVE_NAME, new Skin(SkinsNames.DEFAULT_NAME, null)));
147-       }
148-
149-       @Override
150-       protected boolean computeEnabled() {
151-               return true;
152-       }
153-
154-}
155Index: modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/MainAppModule.java
156===================================================================
157--- modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/MainAppModule.java  (revision 2334)
158+++ modules/org.sophie2.main.app.commons/src/main/java/org/sophie2/main/app/commons/MainAppModule.java  (working copy)
159@@ -28,7 +28,6 @@
160 import org.sophie2.main.app.commons.book.panels.ShowFramesCheckBoxPanel;
161 import org.sophie2.main.app.commons.book.panels.ZoomPercentagePanel;
162 import org.sophie2.main.app.commons.content.FrameContentViewProvider;
163-import org.sophie2.main.app.commons.content.HotTextContentViewProvider;
164 import org.sophie2.main.app.commons.dialogs.BookPropertiesDialog;
165 import org.sophie2.main.app.commons.dialogs.ColorDialog;
166 import org.sophie2.main.app.commons.dialogs.ConfirmDialog;
167@@ -36,7 +35,6 @@
168 import org.sophie2.main.app.commons.dialogs.FontChooserDialog;
169 import org.sophie2.main.app.commons.dialogs.MessageDialog;
170 import org.sophie2.main.app.commons.dialogs.StringDialog;
171-import org.sophie2.main.app.commons.logic.HotTextLogic;
172 import org.sophie2.main.app.commons.logic.PageElementLogic;
173 import org.sophie2.main.app.commons.logic.PageLogic;
174 import org.sophie2.main.app.commons.page.areas.AuthorPageWorkArea;
175@@ -213,13 +211,10 @@
176 //                             BookDocumentWindow.class, BookDocumentWindow.ROLE_AUTHOR_AREA,
177 //                             "xxx-legacy-page-work-area"));
178 
179-               res.add(new SimpleSophieExtension<FrameContentViewProvider>(
180-                               FrameContentViewProvider.class, new HotTextContentViewProvider()));
181                AutoVisualProvider.fillExtensions(res, AppTabBar.class);
182 
183                SimpleOperation.fillExtensions(res, PageElementLogic.class);
184                SimpleOperation.fillExtensions(res, PageLogic.ScenePageLogicR3.class);
185-               SimpleOperation.fillExtensions(res, HotTextLogic.class);
186               
187                SimpleOperation.fillExtensions(res, LinkProcessor.class);
188        }
189Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/sizeAndPosition.png
190===================================================================
191Cannot display: file marked as a binary type.
192svn:mime-type = application/octet-stream
193Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/rightAlignmentOn.png
194===================================================================
195Cannot display: file marked as a binary type.
196svn:mime-type = application/octet-stream
197Index: modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/AlternativeSkinItem.java
198===================================================================
199--- modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/AlternativeSkinItem.java  (revision 2334)
200+++ modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/AlternativeSkinItem.java  (working copy)
201@@ -1,4 +1,4 @@
202-package org.sophie2.main.app.menus.skins;
203+package org.sophie2.main.skin.alternative;
204 
205 import org.sophie2.base.menus.MenuItem;
206 import org.sophie2.base.skins.Skin;
207@@ -13,7 +13,7 @@
208  *
209  */
210 @SkinElementId("app.menus.skins.hackers-skin-item")
211-public class HackersSkinItem extends MenuItem {
212+public class AlternativeSkinItem extends MenuItem {
213 
214        @Override
215        public void clicked() {
216Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/underline.png
217===================================================================
218Cannot display: file marked as a binary type.
219svn:mime-type = application/octet-stream
220Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/decreaseBorder.png
221===================================================================
222Cannot display: file marked as a binary type.
223svn:mime-type = application/octet-stream
224Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/alignFramesRight.png
225===================================================================
226Cannot display: file marked as a binary type.
227svn:mime-type = application/octet-stream
228Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/groupElements.png
229===================================================================
230Cannot display: file marked as a binary type.
231svn:mime-type = application/octet-stream
232Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/centerAlignmentOn.png
233===================================================================
234Cannot display: file marked as a binary type.
235svn:mime-type = application/octet-stream
236Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/addTemplate.png
237===================================================================
238Cannot display: file marked as a binary type.
239svn:mime-type = application/octet-stream
240Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/zOrderUp.png
241===================================================================
242Cannot display: file marked as a binary type.
243svn:mime-type = application/octet-stream
244Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/frameBackground.png
245===================================================================
246Cannot display: file marked as a binary type.
247svn:mime-type = application/octet-stream
248Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/searchDown.png
249===================================================================
250Cannot display: file marked as a binary type.
251svn:mime-type = application/octet-stream
252Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/ungroupElements.png
253===================================================================
254Cannot display: file marked as a binary type.
255svn:mime-type = application/octet-stream
256Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/book.png
257===================================================================
258Cannot display: file marked as a binary type.
259svn:mime-type = application/octet-stream
260Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/italic.png
261===================================================================
262Cannot display: file marked as a binary type.
263svn:mime-type = application/octet-stream
264Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/chain.png
265===================================================================
266Cannot display: file marked as a binary type.
267svn:mime-type = application/octet-stream
268Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/paragraphHalo.png
269===================================================================
270Cannot display: file marked as a binary type.
271svn:mime-type = application/octet-stream
272Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/justifiedAlignment.png
273===================================================================
274Cannot display: file marked as a binary type.
275svn:mime-type = application/octet-stream
276Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/resize.png
277===================================================================
278Cannot display: file marked as a binary type.
279svn:mime-type = application/octet-stream
280Index: modules/org.sophie2.main.layout.mydoggy/src/main/java/org/sophie2/main/layout/mydoggy/MDTab.java
281===================================================================
282--- modules/org.sophie2.main.layout.mydoggy/src/main/java/org/sophie2/main/layout/mydoggy/MDTab.java    (revision 2334)
283+++ modules/org.sophie2.main.layout.mydoggy/src/main/java/org/sophie2/main/layout/mydoggy/MDTab.java    (working copy)
284@@ -7,6 +7,7 @@
285 import org.noos.xing.mydoggy.ToolWindow;
286 import org.noos.xing.mydoggy.ToolWindowAnchor;
287 import org.noos.xing.mydoggy.ToolWindowGroup;
288+import org.noos.xing.mydoggy.ToolWindowManager;
289 import org.noos.xing.mydoggy.plaf.MyDoggyToolWindowManager;
290 import org.sophie2.base.layout.model.Palette;
291 import org.sophie2.base.layout.model.Tab;
292@@ -28,6 +29,8 @@
293  * @author nvasilev
294  */
295 public class MDTab extends MDCompoundLayoutElement {
296+       
297+       private static final String GROUP = "Group";
298 
299        // --- Properties ----------------------------------------------------------
300 
301@@ -49,14 +52,15 @@
302        protected Prop<MDFlap> parent() {
303                return getBean().makeParentProp(MDFlap.class);
304        }
305-       
306+
307        @Override
308        public RwProp<ToolWindowAnchor> orientation() {
309                class orientation extends AutoProperty<ToolWindowAnchor> {
310-                       
311+
312                        @Override
313                        protected ToolWindowAnchor compute() {
314-                               if (parent().get() == null || parent().get().orientation().get() == null) {
315+                               if (parent().get() == null
316+                                               || parent().get().orientation().get() == null) {
317                                        return null;
318                                }
319                                return parent().get().orientation().get();
320@@ -64,8 +68,7 @@
321                }
322                return getBean().makeProp(orientation.class);
323        }
324-       
325-       
326+
327        // TODO: this used some bad things to synchronize..
328        // make sure that the following two are executed
329        // // Registering the element in the tool window manager
330@@ -122,32 +125,42 @@
331                                // do nothing
332                        }
333 
334+                       private String oldTitle;
335+
336                        @Override
337                        protected void setup(JPanel swingComponent) {
338                                swingComponent.setLayout(new BorderLayout());
339 
340-                               ToolWindowGroup group = toolWindowManager().get()
341-                                               .getToolWindowGroup(title().get() + "Group");
342+                               String currentTitle = title().get();
343+                               ToolWindowManager toolWindowManager = toolWindowManager().get();
344 
345-                               for (ToolWindow win : toolWindowManager().get()
346-                                               .getToolWindows()) {
347-                                       group.removeToolWindow(win);
348+                               if (!currentTitle.equals(this.oldTitle)) {
349+                                       removeWindowsGroup(this.oldTitle + GROUP);
350+                                       this.oldTitle = currentTitle;
351                                }
352 
353-                               toolWindowManager().get().unregisterAllToolWindow();
354+                               removeWindowsGroup(currentTitle + GROUP);
355+                               toolWindowManager.unregisterAllToolWindow();
356 
357                                for (MDPalette palette : paletteViews().get()) {
358                                        addMDElement(palette);
359                                }
360 
361-                               if (paletteViews().get().size() != 0) {
362-                                       group.setImplicit(true);
363-                                       group.setVisible(true);
364-                               }
365-
366                                swingComponent.add(toolWindowManager().get(),
367                                                BorderLayout.CENTER);
368                        }
369+
370+                       private final void removeWindowsGroup(String groupName) {
371+                               ToolWindowManager toolWindowManager = toolWindowManager().get();
372+                               ToolWindowGroup group = toolWindowManager
373+                                               .getToolWindowGroup(groupName);
374+                               
375+                               for (ToolWindow win : toolWindowManager.getToolWindows()) {
376+                                        group.removeToolWindow(win);
377+                               }
378+                               
379+                               toolWindowManager.removeToolWindowGroup(groupName);
380+                       }
381                }
382 
383                return getBean().makeProp(swingComponent.class);
384@@ -177,7 +190,7 @@
385                // Creating palettes group
386                ToolWindowGroup group = toolWindowManager.getToolWindowGroup(title()
387                                .get()
388-                               + "Group");
389+                               + GROUP);
390 
391                // Adding the pallete to the palettes group
392                ToolWindow paletteToolWindow = toolWindowManager
393@@ -211,7 +224,7 @@
394                // Obtaining palettes group
395                ToolWindowGroup group = toolWindowManager.getToolWindowGroup(title()
396                                .get()
397-                               + "Group");
398+                               + GROUP);
399                ToolWindow paletteToolWindow = toolWindowManager
400                                .getToolWindow(mdPalette.title().get());
401 
402Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/disapprove.png
403===================================================================
404Cannot display: file marked as a binary type.
405svn:mime-type = application/octet-stream
406Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/pageBorderHalo.png
407===================================================================
408Cannot display: file marked as a binary type.
409svn:mime-type = application/octet-stream
410Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/justifiedAlignmentOn.png
411===================================================================
412Cannot display: file marked as a binary type.
413svn:mime-type = application/octet-stream
414Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/color.png
415===================================================================
416Cannot display: file marked as a binary type.
417svn:mime-type = application/octet-stream
418Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/paragraphHaloOn.png
419===================================================================
420Cannot display: file marked as a binary type.
421svn:mime-type = application/octet-stream
422Index: modules/org.sophie2.base.skins/src/test/java/org/sophie2/base/skins/SkinsTest.java
423===================================================================
424--- modules/org.sophie2.base.skins/src/test/java/org/sophie2/base/skins/SkinsTest.java  (revision 0)
425+++ modules/org.sophie2.base.skins/src/test/java/org/sophie2/base/skins/SkinsTest.java  (revision 0)
426@@ -0,0 +1,232 @@
427+package org.sophie2.base.skins;
428+
429+import java.util.List;
430+
431+import org.sophie2.core.modularity.FakeModuleRegistry;
432+import org.sophie2.core.modularity.SophieExtension;
433+import org.sophie2.core.modularity.SophieExtensionPoint;
434+import org.sophie2.core.modularity.SophieModule;
435+import org.sophie2.core.prolib.impl.AutoProperty;
436+import org.sophie2.core.prolib.impl.BaseProObject;
437+import org.sophie2.core.prolib.interfaces.Prop;
438+import org.sophie2.core.testing.IntegrationTestBase;
439+
440+/**
441+ * A test for Skins. Should test whether {@link Skin}s are
442+ * properly changing.
443+ *
444+ * @author peko
445+ *
446+ */
447+public class SkinsTest extends IntegrationTestBase{
448+       
449+       //create the skin values for both skins. These are just Strings but can be
450+       //any other types. =>
451+       
452+       //default Skin values.
453+       private final static String DEFAULT_SKIN_TOOLTIP = "This is a tool-tip for the SkinsTest";
454+       private final static String DEFAULT_SKIN_TITLE = "This is a title for the SkinsTest";
455+       private final static String DEFAULT_SKIN_STRING = "This is just a String...";
456+       
457+       //alternative Skin values.
458+       private final static String ALT_SKIN_TOOLTIP = "Th15 15 4 t00l-t1p f0r the Sk1n5Te5t";
459+       private final static String ALT_SKIN_TITLE = "Th15 15 4 t1tle f0r the 5k1n5Te5t";
460+       private final static String ALT_SKIN_STRING = "Th15 15 ju5t 4 5tr1ng...";
461+       
462+       //cool Skin value.
463+       private final static String COOL_SKIN_TITLE = "<html>This is<br>a test title with <br> three lines </html>";
464+       
465+       private final static String TITLE_ID = "test-title";
466+       private final static String TOOLTIP_ID = "test-tooltip";
467+       private final static String STRING_ID = "test-string";
468+       
469+       //the class for use in the record ids.
470+       private final static Class<DummySkinableComponent> CLAZZ = DummySkinableComponent.class;
471+       
472+       private Skin defaultSkin;
473+       private Skin alternativeSkin;
474+       
475+       //the third skin will be used to set part of the values
476+       //so that its fallback skin is used.
477+       private Skin coolSkin3;
478+       private static final String COOL_SKIN_NAME = "Cool Skin";
479+       
480+       private DummySkinableComponent component;
481+
482+       
483+       /**
484+        * A module providing the needed extensions for the test.
485+        * @author peko, nenko
486+        *
487+        */
488+       public static class DemoModule extends SophieModule{
489+
490+               @Override
491+               protected void defineExtensionPoints(List<SophieExtensionPoint<?>> res) {
492+                       // TODO Auto-generated method stub
493+                       
494+               }
495+
496+               @Override
497+               protected void defineExtensions(List<SophieExtension<?>> res) {
498+                       makeSkinParts(res);                     
499+               }
500+               
501+               @SuppressWarnings("synthetic-access")
502+               private void makeSkinParts(List<SophieExtension<?>> list) {                     
503+                       //the default skin will have two SkinParts.
504+                       //create skin parts and add skin records to them.
505+                       BaseSkinPart part1 = new BaseSkinPart(SkinsNames.DEFAULT_NAME);
506+                       BaseSkinPart part2 = new BaseSkinPart(SkinsNames.DEFAULT_NAME);
507+                       //the alternative skin will have only one skin part.
508+                       BaseSkinPart part3 = new BaseSkinPart(SkinsNames.ALTERNATIVE_NAME);
509+                       //the skinpart for the third skin.
510+                       BaseSkinPart part4 = new BaseSkinPart(COOL_SKIN_NAME);
511+                       
512+                       part1.add(SkinUtil.getElementId(CLAZZ), TOOLTIP_ID, DEFAULT_SKIN_TOOLTIP);
513+                       part1.add(SkinUtil.getElementId(CLAZZ), TITLE_ID, DEFAULT_SKIN_TITLE);
514+                       part2.add(SkinUtil.getElementId(CLAZZ), STRING_ID, DEFAULT_SKIN_STRING);
515+                       
516+                       part3.add(SkinUtil.getElementId(CLAZZ), TOOLTIP_ID, ALT_SKIN_TOOLTIP);
517+                       part3.add(SkinUtil.getElementId(CLAZZ), TITLE_ID, ALT_SKIN_TITLE);
518+                       part3.add(SkinUtil.getElementId(CLAZZ), STRING_ID, ALT_SKIN_STRING);
519+                       
520+                       part4.add(SkinUtil.getElementId(CLAZZ), TITLE_ID, COOL_SKIN_TITLE);
521+                       
522+                       list.add(part1.asExtension());
523+                       list.add(part2.asExtension());
524+                       list.add(part3.asExtension());
525+                       list.add(part4.asExtension());
526+               }
527+               
528+       }
529+               
530+       /**
531+        *
532+        * A dummy implementation for a skinable component.
533+        *
534+        * @author peko
535+        *
536+        */
537+       class DummySkinableComponent extends BaseProObject{
538+               
539+               /**
540+                * The tool-tip of this component.
541+                * @return property.
542+                */
543+               public Prop<String> toolTip() {
544+                       class toolTip extends AutoProperty<String> {
545+                               
546+                               @SuppressWarnings({ "synthetic-access", "static-access" })
547+                               @Override
548+                               protected String compute() {
549+                                       String res = SkinUtil.getSkinValue(SkinsTest.this.CLAZZ,
550+                                                       TOOLTIP_ID, String.class);                                     
551+                                       return res;
552+                               }
553+                       }
554+                       return getBean().makeProp(toolTip.class);
555+               }
556+               
557+               /**
558+                * The title of this component.
559+                *
560+                * @return property.
561+                */
562+               public Prop<String> title() {
563+                       class title extends AutoProperty<String> {
564+                               
565+                               @SuppressWarnings({ "synthetic-access", "static-access" })
566+                               @Override
567+                               protected String compute() {
568+                                       String res = SkinUtil.getSkinValue(SkinsTest.this.CLAZZ,
569+                                                       TITLE_ID, String.class);
570+                                       return res;
571+                               }
572+                       }
573+                       return getBean().makeProp(title.class);
574+               }
575+               
576+               /**
577+                * A string containing property for this component.
578+                *
579+                * @return property.
580+                */
581+               public Prop<String> string() {
582+                       class string extends AutoProperty<String> {
583+                               
584+                               @SuppressWarnings({ "synthetic-access", "static-access" })
585+                               @Override
586+                               protected String compute() {                                   
587+                                       String res = SkinUtil.getSkinValue(SkinsTest.this.CLAZZ,
588+                                                       STRING_ID, String.class);
589+                                       return res;
590+                               }
591+                       }
592+                       return getBean().makeProp(string.class);
593+               }
594+               
595+       }
596+       
597+       @SuppressWarnings("unchecked")
598+       @Override
599+       protected void setUp() throws Exception {
600+               super.setUp();
601+               
602+               FakeModuleRegistry.start(BaseSkinsModule.class, DemoModule.class);
603+               
604+               //the default skin.
605+               this.defaultSkin = new Skin(SkinsNames.DEFAULT_NAME, null);
606+               //an alternative skin.
607+               this.alternativeSkin = new Skin(SkinsNames.ALTERNATIVE_NAME, this.defaultSkin);
608+               
609+               //the third skin.
610+               this.coolSkin3 = new Skin(COOL_SKIN_NAME, this.defaultSkin);
611+               
612+               this.component = new DummySkinableComponent();
613+       }       
614+       
615+       @Override
616+       protected void tearDown() throws Exception {
617+               FakeModuleRegistry.stop();
618+               super.tearDown();
619+       }
620+       
621+       /**
622+        * Tests the whether the changing of {@link Skin}s changes values properly.
623+        */
624+       public void testChangeSkin(){
625+               
626+               //setting the skin in the SkinManager.
627+               SkinManager.get().currentSkin().set(this.defaultSkin);
628+               
629+               assertSame(SkinsTest.DEFAULT_SKIN_TOOLTIP, this.component.toolTip().get());
630+               assertSame(SkinsTest.DEFAULT_SKIN_TITLE, this.component.title().get());
631+               assertSame(SkinsTest.DEFAULT_SKIN_STRING, this.component.string().get());
632+               
633+               //changing the skin in the SkinManager.
634+               SkinManager.get().currentSkin().set(this.alternativeSkin);
635+               
636+               assertSame(SkinsTest.ALT_SKIN_TOOLTIP, this.component.toolTip().get());
637+               assertSame(SkinsTest.ALT_SKIN_TITLE, this.component.title().get());
638+               assertSame(SkinsTest.ALT_SKIN_STRING, this.component.string().get());
639+               
640+               //resetting the skin to the initial default skin value.
641+               SkinManager.get().currentSkin().set(this.defaultSkin);
642+               
643+               assertSame(SkinsTest.DEFAULT_SKIN_TOOLTIP, this.component.toolTip().get());
644+               assertSame(SkinsTest.DEFAULT_SKIN_TITLE, this.component.title().get());
645+               assertSame(SkinsTest.DEFAULT_SKIN_STRING, this.component.string().get());
646+
647+               //setting the cool skin so that the fallback skin is used (the default one).
648+               SkinManager.get().currentSkin().set(this.coolSkin3);
649+               //from fallback skin.
650+               assertSame(SkinsTest.DEFAULT_SKIN_TOOLTIP, this.component.toolTip().get());
651+               //from cool skin
652+               assertSame(SkinsTest.COOL_SKIN_TITLE, this.component.title().get());
653+               //from fallback skin again.
654+               assertSame(SkinsTest.DEFAULT_SKIN_STRING, this.component.string().get());
655+               
656+       }
657+       
658+}
659\ No newline at end of file
660Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/LinksHalo.png
661===================================================================
662Cannot display: file marked as a binary type.
663svn:mime-type = application/octet-stream
664Index: modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/MainAppMenusModule.java
665===================================================================
666--- modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/MainAppMenusModule.java (revision 2334)
667+++ modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/MainAppMenusModule.java (working copy)
668@@ -38,7 +38,6 @@
669 import org.sophie2.main.app.menus.insert.InsertMenu;
670 import org.sophie2.main.app.menus.insert.InsertTextItem;
671 import org.sophie2.main.app.menus.skins.DefaultSkinItem;
672-import org.sophie2.main.app.menus.skins.HackersSkinItem;
673 import org.sophie2.main.app.menus.skins.SkinsMenu;
674 import org.sophie2.main.app.menus.tabbar.MinimizeAllItem;
675 import org.sophie2.main.app.menus.tabbar.RestoreAllItem;
676@@ -173,10 +172,6 @@
677                res.add(SimpleVisualProvider.createExtension(DefaultSkinItem.class,
678                                SkinsMenu.class, "default-skin-menu-item", "111-default-skin-menu-item"));
679               
680-               res.add(SimpleVisualProvider.createExtension(HackersSkinItem.class,
681-                               SkinsMenu.class, "hackers-skin-menu-item", "222-hackers-skin-menu-item"));
682-               
683-               
684                AutoVisualProvider.fillExtensions(res, RestoreAllItem.class);
685               
686                res.add(makeSkinPart());
687@@ -387,13 +382,6 @@
688                res.add(SkinUtil.getElementId(DefaultSkinItem.class), MenuMember.MNEMONIC_PROP_ID, 0);
689                res.add(SkinUtil.getElementId(DefaultSkinItem.class), MenuMember.ACCELERATOR_PROP_ID, null);
690 
691-               res.add(SkinUtil.getElementId(HackersSkinItem.class), BaseVisualElement.TITLE_PROP_ID,
692-               "Hackers skin");
693-               res.add(SkinUtil.getElementId(HackersSkinItem.class), BaseVisualElement.TOOL_TIP_PROP_ID,
694-                               "Click to switch to hackers skin.");
695-               res.add(SkinUtil.getElementId(HackersSkinItem.class), MenuMember.MNEMONIC_PROP_ID, 0);
696-               res.add(SkinUtil.getElementId(HackersSkinItem.class), MenuMember.ACCELERATOR_PROP_ID, null);
697-               
698                // help items
699                res.add(SkinUtil.getElementId(HelpMenu.class), BaseVisualElement.TITLE_PROP_ID, "Help");
700                res.add(SkinUtil.getElementId(HelpMenu.class), BaseVisualElement.TOOL_TIP_PROP_ID,
701Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/pageShadowHalo.png
702===================================================================
703Cannot display: file marked as a binary type.
704svn:mime-type = application/octet-stream
705Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/multiSelectHaloOff.png
706===================================================================
707Cannot display: file marked as a binary type.
708svn:mime-type = application/octet-stream
709Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/showDesktop.png
710===================================================================
711Cannot display: file marked as a binary type.
712svn:mime-type = application/octet-stream
713Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/zOrderDown.png
714===================================================================
715Cannot display: file marked as a binary type.
716svn:mime-type = application/octet-stream
717Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/frame.png
718===================================================================
719Cannot display: file marked as a binary type.
720svn:mime-type = application/octet-stream
721Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/font.png
722===================================================================
723Cannot display: file marked as a binary type.
724svn:mime-type = application/octet-stream
725Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/searchUp.png
726===================================================================
727Cannot display: file marked as a binary type.
728svn:mime-type = application/octet-stream
729Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/leftAlignmentOn.png
730===================================================================
731Cannot display: file marked as a binary type.
732svn:mime-type = application/octet-stream
733Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/leftAlignment.png
734===================================================================
735Cannot display: file marked as a binary type.
736svn:mime-type = application/octet-stream
737Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/italicOn.png
738===================================================================
739Cannot display: file marked as a binary type.
740svn:mime-type = application/octet-stream
741Index: modules/org.sophie2.main.skin.alternative/pom.xml
742===================================================================
743--- modules/org.sophie2.main.skin.alternative/pom.xml   (revision 2334)
744+++ modules/org.sophie2.main.skin.alternative/pom.xml   (working copy)
745@@ -49,6 +49,11 @@
746                        <artifactId>org.sophie2.base.skins</artifactId>
747                        <version>2.0-SNAPSHOT</version>
748                </dependency>
749+               <dependency>
750+                       <groupId>org.sophie2</groupId>
751+                       <artifactId>org.sophie2.main.app.menus</artifactId>
752+                       <version>2.0-SNAPSHOT</version>
753+               </dependency>
754        </dependencies>
755        <build>
756                <plugins>
757Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/bold.png
758===================================================================
759Cannot display: file marked as a binary type.
760svn:mime-type = application/octet-stream
761Index: modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/AlternativeSkinModule.java
762===================================================================
763--- modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/AlternativeSkinModule.java        (revision 2334)
764+++ modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/AlternativeSkinModule.java        (working copy)
765@@ -3,28 +3,33 @@
766 import java.util.List;
767 
768 import org.sophie2.base.commons.util.ImageUtil;
769+import org.sophie2.base.menus.MenuMember;
770 import org.sophie2.base.skins.BaseSkinPart;
771 import org.sophie2.base.skins.Skin;
772 import org.sophie2.base.skins.SkinPart;
773 import org.sophie2.base.skins.SkinRecord;
774+import org.sophie2.base.skins.SkinUtil;
775 import org.sophie2.base.skins.SkinsNames;
776+import org.sophie2.base.visual.BaseVisualElement;
777+import org.sophie2.base.visual.SimpleVisualProvider;
778 import org.sophie2.core.modularity.SophieExtension;
779 import org.sophie2.core.modularity.SophieExtensionPoint;
780 import org.sophie2.core.modularity.SophieModule;
781 import org.sophie2.core.prolib.list.ListEntry;
782+import org.sophie2.main.app.menus.skins.SkinsMenu;
783 
784 /**
785- * This is the {@link SophieModule} defining {@link SkinPart} for the alternative
786- * {@link Skin} in Sophie2.
787+ * This is the {@link SophieModule} defining {@link SkinPart} for the
788+ * alternative {@link Skin} in Sophie2.
789  *
790  * @author nenko, peko
791- *
792+ *
793  */
794 public class AlternativeSkinModule extends SophieModule {
795 
796        @Override
797        protected void defineExtensionPoints(List<SophieExtensionPoint<?>> res) {
798-               //no extension point defined... for now
799+               // no extension point defined... for now
800        }
801 
802        @Override
803@@ -32,6 +37,27 @@
804                BaseSkinPart part = new BaseSkinPart(SkinsNames.ALTERNATIVE_NAME);
805                initSkinPart(part);
806                res.add(part.asExtension());
807+
808+               res.add(SimpleVisualProvider.createExtension(AlternativeSkinItem.class,
809+                               SkinsMenu.class, "alternative-skin-menu-item",
810+                               "222-alternative-skin-menu-item"));
811+
812+               res.add(makeSkinPart());
813+       }
814+
815+       private SophieExtension<SkinPart> makeSkinPart() {
816+               BaseSkinPart res = new BaseSkinPart();
817+               res.add(SkinUtil.getElementId(AlternativeSkinItem.class),
818+                               BaseVisualElement.TITLE_PROP_ID, "Alternative skin");
819+               res.add(SkinUtil.getElementId(AlternativeSkinItem.class),
820+                               BaseVisualElement.TOOL_TIP_PROP_ID,
821+                               "Click to switch to alternative skin.");
822+               res.add(SkinUtil.getElementId(AlternativeSkinItem.class),
823+                               MenuMember.MNEMONIC_PROP_ID, 0);
824+               res.add(SkinUtil.getElementId(AlternativeSkinItem.class),
825+                               MenuMember.ACCELERATOR_PROP_ID, null);
826+
827+               return res.asExtension();
828        }
829 
830        private void initSkinPart(SkinPart part) {
831@@ -40,8 +66,9 @@
832 
833                        Object value = createValue(idParts[1], idParts[2]);
834                        if (value != null) {
835-                               part.records().get().add(new ListEntry(idParts[0], new SkinRecord(
836-                                               idParts[0], value)));
837+                               part.records().get().add(
838+                                               new ListEntry(idParts[0], new SkinRecord(idParts[0],
839+                                                               value)));
840                        }
841                }
842        }
843@@ -51,9 +78,10 @@
844                        return value;
845                }
846                if (type.equals("icon")) {
847-                       return ImageUtil.loadIcon("hackicons"+ System.getProperty("file.separator") + value);
848+                       return ImageUtil.loadIcon("hackicons"
849+                                       + System.getProperty("file.separator") + value);
850                }
851-               
852+
853                return null;
854        }
855 
856Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/alignElements.png
857===================================================================
858Cannot display: file marked as a binary type.
859svn:mime-type = application/octet-stream
860Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/pressedChain.png
861===================================================================
862Cannot display: file marked as a binary type.
863svn:mime-type = application/octet-stream
864Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/minus.png
865===================================================================
866Cannot display: file marked as a binary type.
867svn:mime-type = application/octet-stream
868Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/unchain.png
869===================================================================
870Cannot display: file marked as a binary type.
871svn:mime-type = application/octet-stream
872Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/frameInsets.png
873===================================================================
874Cannot display: file marked as a binary type.
875svn:mime-type = application/octet-stream
876Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/boldOn.png
877===================================================================
878Cannot display: file marked as a binary type.
879svn:mime-type = application/octet-stream
880Index: modules/org.sophie2.main.layout.mydoggy/src/main/java/org/sophie2/main/layout/mydoggy/MDToolWindowFactory.java
881===================================================================
882--- modules/org.sophie2.main.layout.mydoggy/src/main/java/org/sophie2/main/layout/mydoggy/MDToolWindowFactory.java      (revision 2334)
883+++ modules/org.sophie2.main.layout.mydoggy/src/main/java/org/sophie2/main/layout/mydoggy/MDToolWindowFactory.java      (working copy)
884@@ -27,7 +27,7 @@
885                configureDockedDescriptor(toolWindow);
886                configureSlidingDescriptor(toolWindow);
887                configureFloatingDescriptor(toolWindow);
888-               configureFloatingLiveDescriptor(toolWindow);
889+               //configureFloatingLiveDescriptor(toolWindow);
890        }
891 
892        /**
893Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/increaseBorder.png
894===================================================================
895Cannot display: file marked as a binary type.
896svn:mime-type = application/octet-stream
897Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/plus.png
898===================================================================
899Cannot display: file marked as a binary type.
900svn:mime-type = application/octet-stream
901Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/remove.png
902===================================================================
903Cannot display: file marked as a binary type.
904svn:mime-type = application/octet-stream
905Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/rightAlignment.png
906===================================================================
907Cannot display: file marked as a binary type.
908svn:mime-type = application/octet-stream
909Index: modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/SkinDefIds.java
910===================================================================
911--- modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/SkinDefIds.java   (revision 2334)
912+++ modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/SkinDefIds.java   (working copy)
913@@ -11,244 +11,6 @@
914  */
915 public class SkinDefIds {
916 
917-//     static String DEFAULT_SKIN_DEF_IDS [] = {               
918-//             "main.func.config.config-tab/title : text : Config",
919-//             "main.func.config.config-tab/tool-tip : text : instruments for application configuration.",
920-//             "main.func.config.plugin-about-palette/title : text : Plugin information",
921-//             "main.func.config.plugin-about-palette/tool-tip : text : Displays information about the currently registered plugin.",
922-//             "main.func.config.plugins-palette/title : text : Plugins",
923-//             "main.func.config.plugins-palette/tool-tip : text : List of available application plugins.",
924-//             "app.menus.file-menu/title : text : File",
925-//             "app.menus.file-menu/tool-tip : text : File menu",
926-//             "app.menus.file.new-book-menu-item/title : text : New Book",
927-//             "app.menus.file.new-book-menu-item/tool-tip : text : Create a new book.",
928-//             "app.menus.file.open-book-menu-item/title : text : open Book",
929-//             "app.menus.file.open-book-menu-item/tool-tip : text : open an existing book.",
930-//             "app.menus.file.save-book-menu-item/title : text : save",
931-//             "app.menus.file.save-book-menu-item/tool-tip : text : save the current book to a file.",
932-//             "app.menus.file.save-book-as-menu-item/title : text : save as",
933-//             "app.menus.file.save-book-as-menu-item/tool-tip : text : save the current book to another file.",
934-//             "app.menus.file.save-book-as-template-menu-item/title : text : save as Template",
935-//             "app.menus.file.save-book-as-template-menu-item/tool-tip : text : save the current book as a template.",
936-//             "app.menus.file.book-properties-menu-item/title : text : Book Properties",
937-//             "app.menus.file.book-properties-menu-item/tool-tip : text : show the properties of the current book.",
938-//             "app.menus.file.close-book-menu-item/title : text : Close",
939-//             "app.menus.file.close-book-menu-item/tool-tip : text : Close the current book.",
940-//             "app.menus.file.exit-menu-item/title : text : Quit sophie 2",
941-//             "app.menus.file.exit-menu-item/tool-tip : text : Close sophie 2.",
942-//             "app.menus.edit-menu/title : text : edit",
943-//             "app.menus.edit-menu/tool-tip : text : edit menu",
944-//             "app.menus.edit.undo-menu-item/title : text : {generated}",
945-//             "app.menus.edit.undo-menu-item/tool-tip : text : Revert the last change made.",
946-//             "app.menus.edit.redo-menu-item/title : text : {generated}",
947-//             "app.menus.edit.redo-menu-item/tool-tip : text : Restore the last reverted change.",
948-//             "app.menus.edit.set-title-menu-item/title : text : set Title",
949-//             "app.menus.edit.set-title-menu-item/tool-tip : text : set the title of the current book.",
950-//             "app.menus.edit.show-connections-menu-item/title : text : {generated}",
951-//             "app.menus.edit.show-connections-menu-item/tool-tip : text : Toggle the display of text frame chain connections.",
952-//             "app.menus.insert-menu/title : text : ToDo",
953-//             "app.menus.insert-menu/tool-tip : text : insert menu",
954-//             "app.menus.insert.insert-text-menu-item/title : text : Text",
955-//             "app.menus.insert.insert-text-menu-item/tool-tip : text : add a text frame to the current page.",
956-//             "app.menus.window-menu/title : text : Window",
957-//             "app.menus.window-menu/tool-tip : text : Window menu",
958-//             "app.menus.window.cascade-menu-item/title : text : Cascade",
959-//             "app.menus.window.cascade-menu-item/tool-tip : text : Cascade the open documents.",
960-//             "app.menus.window.tile-menu-item/title : text : Tile",
961-//             "app.menus.window.tile-menu-item/tool-tip : text : Tile the open documents.",
962-//             "app.menus.window.document-menu-item/title : text : {generated:document-title}",
963-//             "app.menus.window.document-menu-item/tool-tip : text : null",
964-//             "app.menus.help-menu/title : text : Help",
965-//             "app.menus.help-menu/tool-tip : text : Help menu",
966-//             "org.sophie2.main.app.menus.tabbar.MinimizeAllItem/title : text : Minimizeall",
967-//             "org.sophie2.main.app.menus.tabbar.MinimizeAllItem/tool-tip : text : Click here to hide all windows and show the desktop.",
968-//             "main.view.menus.tabbar.restore-all-item/title : text : Restoreall",
969-//             "main.view.menus.tabbar.restore-all-item/tool-tip : text : Click here to show all windows that are minimized.",
970-//             "main.view.layout.books-tab/title : text : Books",
971-//             "main.view.layout.books-tab/tool-tip : text : instruments for books.",
972-//             "main.view.layout.books.open-books-palette/title : text : open Books",
973-//             "main.view.layout.books.open-books-palette/tool-tip : text : List of open books",
974-//             "main.view.layout.pages.page-preview-palette/title : text : Page Preview",
975-//             "main.view.layout.pages.page-preview-palette/tool-tip : text : Preview of the book pages.",
976-//             "main.view.layout.pages-tab/title : text : Pages",
977-//             "main.view.layout.pages-tab/tool-tip : text : instruments for pages",
978-//             "main.view.layout.timelines-tab/title : text : Timelines",
979-//             "main.view.layout.timelines-tab/tool-tip : text : instruments for timelines.",
980-//             "main.view.layout.tools.search-palette/title : text : search",
981-//             "main.view.layout.tools.search-palette/tool-tip : text : allows searching in the text content of the book.",
982-//             "main.view.layout.tools-tab/title : text : Tools",
983-//             "main.view.layout.tools-tab/tool-tip : text : Book related instruments",
984-//             "main.view.layout.library.book-templates-palette/title : text : Book Templates",
985-//             "main.view.layout.library.book-templates-palette/tool-tip : text : Templates for new books.",
986-//             "main.view.layout.library.components-palette/title : text : Frames",
987-//             "main.view.layout.library.components-palette/tool-tip : text : Frame components",
988-//             "main.view.layout.library-tab/title : text : Library",
989-//             "main.view.layout.library-tab/tool-tip : text : Provides book and frame components",
990-//             "main.view.layout.library.page-templates-palette/title : text : Page Templates Palette",
991-//             "main.view.layout.library.page-templates-palette/tool-tip : text : Templates for new Pages",
992-//             "main.view.layout.library.frame-templates-palette/title : text : Frame Templates Palette",
993-//             "main.view.layout.library.frame-templates-palette/tool-tip : text : Templates for new Frames",
994-//             "main.view.layout.styles-tab/title : text : styles",
995-//             "main.view.layout.styles-tab/tool-tip : text : style related palettes.",
996-//             "main.func.servers.servers-tab/title : text : servers",
997-//             "main.func.servers.servers-tab/tool-tip : text : server related things.",
998-//             "main.func.servers.connections-palette/title : text : Connections",
999-//             "main.func.servers.connections-palette/tool-tip : text : server connections.",
1000-//             "main.view.layout.books.embedded-books-palette/title : text : embedded Books",
1001-//             "main.view.layout.books.embedded-books-palette/tool-tip : text : List of currently embedded books.",
1002-//             "main.view.layout.resources.all-resources-palette/title : text : Resources",
1003-//             "main.view.layout.resources.all-resources-palette/tool-tip : text : all resources currently used in the book.",
1004-//             "main.view.layout.resources-tab/title : text : Resources",
1005-//             "main.view.layout.resources-tab/tool-tip : text : The resources in the current book",
1006-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsTop/title : text : Top border size:",
1007-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsTop/tool-tip : text : Change the top size of the border.",
1008-//             "base.bound.base-bound-control/ok-icon : icon : approve.png",
1009-//             "base.bound.base-bound-control/error-icon : icon : disapprove.png",
1010-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsRight/title : text : Right border size:",
1011-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsRight/tool-tip : text : Change the right size of the border.",
1012-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsBottom/title : text : Bottom border size:",
1013-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsBottom/tool-tip : text : Change the bottom size of the border.",
1014-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsLeft/title : text : Left border size:",
1015-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderInsetsLeft/tool-tip : text : Change the left size of the border.",
1016-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderColorField/title : text : Border color:",
1017-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderColorField/tool-tip : text : Change the color of the border",
1018-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderUseTemplate/title : text : Border template: ",
1019-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderUseTemplate/tool-tip : text : Use the border from the template.",
1020-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderLocked/title : text : Lock the border: ",
1021-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BorderLocked/tool-tip : text : Prevent the border from any changes.",
1022-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BackgroundColorField/title : text : Background color:",
1023-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$BackgroundColorField/tool-tip : text : Change the color of the background",
1024-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$FrameVisibleCheck/title : text : Frame visible: ",
1025-//             "org.sophie2.main.app.halos.huds.BackgroundAndBorderHud$FrameVisibleCheck/tool-tip : text : toggle the initial visibility of the frame.",
1026-//             "main.view.halos.huds.background-and-border-hud/tool-tip : text : edit the border and background of a frame.",
1027-//             "main.view.halos.shared.background-and-border-halo-button/tool-tip : text : Change the border and background.",
1028-//             "main.view.halos.shared.background-and-border-halo-button/halo-icon : icon : frameBackground.png",
1029-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingTop/title : text : Top padding:",
1030-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingTop/tool-tip : text : Change the top padding of the frame.",
1031-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingRight/title : text : Right padding:",
1032-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingRight/tool-tip : text : Change the right padding of the frame.",
1033-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingBottom/title : text : Bottom padding:",
1034-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingBottom/tool-tip : text : Change the bottom padding of the frame.",
1035-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingLeft/title : text : Left padding:",
1036-//             "org.sophie2.main.app.halos.huds.InsetsHud$FramePaddingLeft/tool-tip : text : Change the left padding of the frame.",
1037-//             "org.sophie2.main.app.halos.huds.InsetsHud$FrameMarginRight/title : text : Right margin:",
1038-//             "org.sophie2.main.app.halos.huds.InsetsHud$FrameMarginRight/tool-tip : text : Change the right margin of the frame.",
1039-//             "org.sophie2.main.app.halos.huds.InsetsHud$FrameMarginBottom/title : text : Bottom margin:",
1040-//             "org.sophie2.main.app.halos.huds.InsetsHud$FrameMarginBottom/tool-tip : text : Change the bottom margin of the frame.",
1041-//             "org.sophie2.main.app.halos.huds.InsetsHud$FrameMarginLeft/title : text : Left margin:",
1042-//             "org.sophie2.main.app.halos.huds.InsetsHud$FrameMarginLeft/tool-tip : text : Change the left margin of the frame.",
1043-//             "main.view.halos.huds.insets-hud/tool-tip : text : edit the padding/margin properties of a frame.",
1044-//             "main.view.halos.frame.frame-insets-halo-button/tool-tip : text : edit frame margin and padding settings.",
1045-//             "main.view.halos.frame.frame-insets-halo-button/halo-icon : icon : frameInsets.png",
1046-//             "main.view.halos.frame.frame-z-order-up-halo-button/tool-tip : text : increase the z-order of this frame.",
1047-//             "main.view.halos.frame.frame-z-order-up-halo-button/halo-icon : icon : zOrderUp.png",
1048-//             "main.view.halos.frame.frame-z-order-down-halo-button/tool-tip : text : Decrease the z-order of this frame.",
1049-//             "main.view.halos.frame.frame-z-order-down-halo-button/halo-icon : icon : zOrderDown.png",
1050-//             "org.sophie2.main.app.halos.huds.ShadowHud$ShadowPositionX/title : text : X:",
1051-//             "org.sophie2.main.app.halos.huds.ShadowHud$ShadowPositionX/tool-tip : text : Change the shadow on the X axis.",
1052-//             "org.sophie2.main.app.halos.huds.ShadowHud$ShadowPositionY/title : text : Y:",
1053-//             "org.sophie2.main.app.halos.huds.ShadowHud$ShadowPositionY/tool-tip : text : Change the shadow on the Y axis.",
1054-//             "org.sophie2.main.app.halos.huds.ShadowHud$ShadowColorField/title : text : Color:",
1055-//             "org.sophie2.main.app.halos.huds.ShadowHud$ShadowColorField/tool-tip : text : Change the color of the shadow",
1056-//             "main.view.halos.huds.shadow-hud/tool-tip : text : edit the shadow properties of a page.",
1057-//             "main.view.halos.frame.frame-shadow-halo-button/tool-tip : text : edit shadow settings.",
1058-//             "main.view.halos.frame.frame-shadow-halo-button/halo-icon : icon : pageShadowHalo.png",
1059-//             "main.view.halos.frame.frame-content-use-template-halo-button/tool-tip : text : Use the content from the template.",
1060-//             "main.view.halos.frame.frame-content-use-template-halo-button/icon-on : icon : useTemplateOn.png",
1061-//             "main.view.halos.frame.frame-content-use-template-halo-button/icon-off : icon : useTemplateOff.png",
1062-//             "main.view.halos.page.page-frames-use-template-halo-button/tool-tip : text : show the frames from the template.",
1063-//             "main.view.halos.page.page-frames-use-template-halo-button/icon-on : icon : useTemplateOn.png",
1064-//             "main.view.halos.page.page-frames-use-template-halo-button/icon-off : icon : useTemplateOff.png",
1065-//             "main.view.shared.frame.add-template/tool-tip : text : add the object as a template.",
1066-//             "main.view.shared.frame.add-template/halo-icon : icon : addTemplate.png",
1067-//             "org.sophie2.main.app.halos.align.AlignElementsLeft/title : text : align left",
1068-//             "org.sophie2.main.app.halos.align.AlignElementsLeft/tool-tip : text : Click to align selected elements' left sides.",
1069-//             "org.sophie2.main.app.halos.align.AlignElementsRight/title : text : align right",
1070-//             "org.sophie2.main.app.halos.align.AlignElementsRight/tool-tip : text : Click to align selected elements' right sides.",
1071-//             "org.sophie2.main.app.halos.align.AlignElementsTop/title : text : align top",
1072-//             "org.sophie2.main.app.halos.align.AlignElementsTop/tool-tip : text : Click to align selected elements' top sides.",
1073-//             "org.sophie2.main.app.halos.align.AlignElementsBottom/title : text : align bottom",
1074-//             "org.sophie2.main.app.halos.align.AlignElementsBottom/tool-tip : text : Click to align selected elements' bottom sides.",
1075-//             "org.sophie2.main.app.halos.align.AlignElementsHorizontally/title : text : align horizontally",
1076-//             "org.sophie2.main.app.halos.align.AlignElementsHorizontally/tool-tip : text : Click to align selected elements' horizontally.",
1077-//             "org.sophie2.main.app.halos.align.AlignElementsVertically/title : text : align vertically",
1078-//             "org.sophie2.main.app.halos.align.AlignElementsVertically/tool-tip : text : Click to align selected elements' vertically.",
1079-//             "main.view.halos.align.aligning-page-elements-hud/tool-tip : text : align the selected page elements.",
1080-//             "main.view.halos.buttons.huds.align-elements-halo-button/tool-tip : text : align the selected page elements.",
1081-//             "main.view.halos.buttons.huds.align-elements-halo-button/halo-icon : icon : alignElements.png",
1082-//             "main.view.halos.grouping.group-page-elements-button/tool-tip : text : Click to group the selected page elements.",
1083-//             "main.view.halos.grouping.group-page-elements-button/halo-icon : icon : groupElements.png",
1084-//             "main.view.halos.grouping.ungroup-page-elements-button/tool-tip : text : Click to ungroup the selected page elements.",
1085-//             "main.view.halos.grouping.ungroup-page-elements-button/halo-icon : icon : ungroupElements.png",
1086-//             "org.sophie2.main.func.links.LinksHud$CurrentRule/title : text : Rule:",
1087-//             "org.sophie2.main.func.links.LinksHud$CurrentRule/tool-tip : text : select a rule",
1088-//             "org.sophie2.main.func.links.LinksHud$AddRule/tool-tip : text : add new rule",
1089-//             "org.sophie2.main.func.links.LinksHud$RemoveRule/tool-tip : text : Remove the selected rule",
1090-//             "org.sophie2.main.func.links.LinksHud$AvailableTriggers/title : text : Trigger:",
1091-//             "org.sophie2.main.func.links.LinksHud$AvailableTriggers/tool-tip : text : select a trigger for this rule",
1092-//             "org.sophie2.main.func.links.LinksHud$AvailableActions/title : text : action:",
1093-//             "org.sophie2.main.func.links.LinksHud$AvailableActions/tool-tip : text : select action for this rule",
1094-//             "org.sophie2.main.func.links.actions.navigation.GoToPageConfigurationPanel$AvailablePages/title : text : Go to page:",
1095-//             "org.sophie2.main.func.links.actions.navigation.GoToPageConfigurationPanel$AvailablePages/tool-tip : text : Go To Page",
1096-//             "org.sophie2.main.func.links.actions.showing.ShowFrameConfigurationPanel$FrameSelector/title : text : select frame:",
1097-//             "org.sophie2.main.func.links.actions.showing.ShowFrameConfigurationPanel$FrameSelector/tool-tip : text : show frame",
1098-//             "main.func.links.links-hud/tool-tip : text : Manage links.",
1099-//             "main.func.links.links-halo-button/tool-tip : text : Manage links.",
1100-//             "main.func.links.links-halo-button/halo-icon : icon : LinksHalo.png",
1101-//             "main.view.halos.frame.move.frame-move-halo-button/halo-icon : icon : move.png",
1102-//             "main.view.halos.frame.move.frame-move-halo-button/tool-tip : text : Drag to move the frame",
1103-//             "main.view.halos.frame.move.frame-remove-halo-button/halo-icon : icon : remove.png",
1104-//             "main.view.halos.frame.move.frame-remove-halo-button/tool-tip : text : Click to delete the frame.",
1105-//             "extra.annotations.sticky-remove-halo-button/halo-icon : icon : remove.png",
1106-//             "extra.annotations.sticky-remove-halo-button/tool-tip : text : Click to remove the sticky",
1107-//             "org.sophie2.main.func.text.halos.TextFontHud$TextItalicStyle/title : text : italic:",
1108-//             "org.sophie2.main.func.text.halos.TextFontHud$TextItalicStyle/tool-tip : text : set on/off italic",
1109-//             "org.sophie2.main.func.text.halos.TextFontHud$TextBoldStyle/title : text : Bold: ",
1110-//             "org.sophie2.main.func.text.halos.TextFontHud$TextBoldStyle/tool-tip : text : set on/off bold.",
1111-//             "org.sophie2.main.func.text.halos.TextFontHud$TextUnderlineStyle/title : text : Underline: ",
1112-//             "org.sophie2.main.func.text.halos.TextFontHud$TextUnderlineStyle/tool-tip : text : set on/off underline",
1113-//             "org.sophie2.main.func.text.halos.TextFontHud$TextStrikethroughStyle/title : text : strikethrough: ",
1114-//             "org.sophie2.main.func.text.halos.TextFontHud$TextStrikethroughStyle/tool-tip : text : set on/off strikethrough",
1115-//             "main.func.text.hud.text-font/tool-tip : text : Choose font family name, size adn style",
1116-//             "main.func.text.halos.text-font-button/tool-tip : text : Choose font",
1117-//             "main.func.text.halos.text-font-button/halo-icon : icon : font.png",
1118-//             "org.sophie2.main.app.commons.app.AppTabBar/title : text : TabBar",
1119-//             "org.sophie2.main.app.commons.app.AppTabBar/tool-tip : text : open Books",
1120-//             "org.sophie2.main.app.commons.app.AppTabBar/show-desktop-icon : icon : showDesktop.png",
1121-//             "org.sophie2.main.app.commons.app.AppTabBar/show-desktop-tool-tip : text : Click here to hide all windows and show the desktop.",
1122-//             "app.menus.file.file-print-menu-item/title : text : Print...",
1123-//             "app.menus.file.file-print-menu-item/tool-tip : text : Print current book",
1124-//             "app.menus.file.file-print-to-file-menu-item/title : text : Print To File...",
1125-//             "app.menus.file.file-print-to-file-menu-item/tool-tip : text : Print current book to file",
1126-//             "app.menus.insert.insert-image-menu-item/title : text : image",
1127-//             "app.menus.insert.insert-image-menu-item/tool-tip : text : add an image frame to the current page.",
1128-//             "app.menus.insert.insert-audio-menu-item/title : text : audio",
1129-//             "app.menus.insert.insert-audio-menu-item/tool-tip : text : add an audio frame to the current page.",
1130-//             "app.menus.insert.insert-video-menu-item/title : text : Video",
1131-//             "app.menus.insert.insert-video-menu-item/tool-tip : text : add a video frame to the current page.",
1132-//             "app.menus.insert.insert-pdf-menu-item/title : text : Pdf",
1133-//             "app.menus.insert.insert-pdf-menu-item/tool-tip : text : add a PDF frame to the current page.",
1134-//             "app.menus.insert.insert-book-menu-item/title : text : Book",
1135-//             "app.menus.insert.insert-book-menu-item/tool-tip : text : embed a book in the current page.",
1136-//             "app.menus.help.help-contents-menu-item/title : text : Help Contents",
1137-//             "app.menus.help.help-contents-menu-item/tool-tip : text : Displays the main help index",
1138-//             "app.menus.help.about-menu-item/title : text : about",
1139-//             "app.menus.help.about-menu-item/tool-tip : text : Displays version information, license used, etc.",
1140-//             "extra.annotations.all-annotations-palette/title : text : all annotations",
1141-//             "extra.annotations.all-annotations-palette/tool-tip : text : Load/save annotations, manage annotations from different users",
1142-//             "extra.annotations.stickies-palette/title : text : stickies",
1143-//             "extra.annotations.stickies-palette/tool-tip : text : add new sticky, show or hide stickies",
1144-//             "main.view.layout.resources.book-extras/title : text : Book extras",
1145-//             "main.view.layout.resources.book-extras/tool-tip : text : Manage book extras - show/hide, export/import, etc.",
1146-//             "extra.annotations.annotations-tab/title : text : annotations",
1147-//             "extra.annotations.annotations-tab/tool-tip : text : stick notes to the book, highlight some text or record your voice comments",
1148-//             "main.view.layout.resources.resources-detail-palette/tool-tip : text : Detail View",
1149-//             "main.view.layout.resources.resources-detail-palette/title : text : Detail View",
1150-//             "main.view.layout.changes.all-changes-palette/title : text : Changes",
1151-//             "main.view.layout.changes.all-changes-palette/tool-tip : text : all changes done..",
1152-//             "main.view.halos.page.resize.page-resize-halo-button/halo-icon : icon : resize.png"                     
1153-//             };
1154-       
1155        /**
1156         * Alternative skin's definintion.
1157         */
1158Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/centerAlignment.png
1159===================================================================
1160Cannot display: file marked as a binary type.
1161svn:mime-type = application/octet-stream
1162Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/move.png
1163===================================================================
1164Cannot display: file marked as a binary type.
1165svn:mime-type = application/octet-stream
1166Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/useTemplateOff.png
1167===================================================================
1168Cannot display: file marked as a binary type.
1169svn:mime-type = application/octet-stream
1170Index: modules/org.sophie2.base.commons/src/main/resources/distrib/icons/hackicons/borderColor.png
1171===================================================================
1172Cannot display: file marked as a binary type.
1173svn:mime-type = application/octet-stream