Ticket #2439: skinning-improvement.patch
File skinning-improvement.patch, 65.4 KB (added by tanya, 15 years ago) |
---|
-
modules/org.sophie2.main.func.help/src/main/java/org/sophie2/main/func/help/HelpModule.java
### Eclipse Workspace Patch 1.0 #P sophie
13 13 import org.sophie2.base.layout.model.MainWindow; 14 14 import org.sophie2.base.menus.MenuMember; 15 15 import org.sophie2.base.skins.BaseSkinPart; 16 import org.sophie2.base.skins.S impleSkinPartsProvider;16 import org.sophie2.base.skins.SkinManager; 17 17 import org.sophie2.base.skins.SkinUtil; 18 import org.sophie2.base.skins. SkinsNames;18 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 19 19 import org.sophie2.base.visual.BaseVisualElement; 20 20 import org.sophie2.base.visual.SimpleVisualProvider; 21 21 import org.sophie2.core.modularity.SimpleSophieExtension; … … 173 173 res.add(SimpleVisualProvider.createExtension(BugReportDialog.UserExplanationField.class, 174 174 MainWindow.class, "user-explanation-field", "kkk-user-explanation-field")); 175 175 176 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);176 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 177 177 part.add(SkinUtil.getElementId(SaveBugReportButton.class), BaseVisualElement.TITLE_PROP_ID, "Save as File..."); 178 178 part.add(SkinUtil.getElementId(SaveBugReportButton.class), BaseVisualElement.TOOL_TIP_PROP_ID, "Save the bug report to a file"); 179 179 part.add(SkinUtil.getElementId(CancelBugReportButton.class), BaseVisualElement.TITLE_PROP_ID, "Cancel"); … … 186 186 SimpleSkinPartsProvider skinParts = new SimpleSkinPartsProvider(); 187 187 skinParts.parts().add(part); 188 188 skinParts.parts().add(makeSkinPart()); 189 skinParts.parts().add(makeLang SkinPart());189 skinParts.parts().add(makeLanguagePackPart()); 190 190 191 191 res.add(skinParts.asExtension()); 192 192 } … … 207 207 return res; 208 208 } 209 209 210 private BaseSkinPart makeLang SkinPart() {211 BaseSkinPart res = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);210 private BaseSkinPart makeLanguagePackPart() { 211 BaseSkinPart res = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 212 212 213 213 res.add(SkinUtil.getElementId(HelpMenu.class), BaseVisualElement.TITLE_PROP_ID, "Help"); 214 214 res.add(SkinUtil.getElementId(HelpMenu.class), BaseVisualElement.TOOL_TIP_PROP_ID, -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinPartsProvider.java
1 package org.sophie2.base.skins;2 3 import org.sophie2.core.prolib.interfaces.ListProp;4 5 /**6 * Extension point providing a list of base skin parts which are to be used in7 * the current skin.8 *9 * @author tanya10 */11 public interface SkinPartsProvider {12 13 /**14 * List of {@link SkinPart}s which are to be used in the current skin.15 * @return16 * List of skin parts.17 */18 ListProp<SkinPart> parts();19 } -
modules/org.sophie2.main.func.servers/src/main/java/org/sophie2/main/func/servers/MainFuncServersModule.java
10 10 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 11 11 import org.sophie2.base.persistence.persister.Persister; 12 12 import org.sophie2.base.skins.BaseSkinPart; 13 import org.sophie2.base.skins.S impleSkinPartsProvider;13 import org.sophie2.base.skins.SkinManager; 14 14 import org.sophie2.base.skins.SkinUtil; 15 import org.sophie2.base.skins. SkinsNames;15 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 16 16 import org.sophie2.base.visual.AutoVisualProvider; 17 17 import org.sophie2.base.visual.BaseVisualElement; 18 18 import org.sophie2.base.visual.SimpleVisualProvider; … … 116 116 117 117 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 118 118 provider.parts().add(makeSkinPart()); 119 provider.parts().add(makeLang SkinPart());119 provider.parts().add(makeLanguagePackPart()); 120 120 res.add(provider.asExtension()); 121 121 122 122 … … 158 158 return res; 159 159 } 160 160 161 private BaseSkinPart makeLang SkinPart() {162 BaseSkinPart res = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);161 private BaseSkinPart makeLanguagePackPart() { 162 BaseSkinPart res = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 163 163 164 164 res.add(SkinUtil.getElementId(ServersTab.class), 165 165 BaseVisualElement.TITLE_PROP_ID, "Servers"); -
modules/org.sophie2.main.func.media/src/main/java/org/sophie2/main/func/media/MainFuncMediaModule.java
10 10 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 11 11 import org.sophie2.base.persistence.persister.Persister; 12 12 import org.sophie2.base.skins.BaseSkinPart; 13 import org.sophie2.base.skins.S impleSkinPartsProvider;13 import org.sophie2.base.skins.SkinManager; 14 14 import org.sophie2.base.skins.SkinUtil; 15 import org.sophie2.base.skins. SkinsNames;15 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 16 16 import org.sophie2.base.visual.AutoVisualProvider; 17 17 import org.sophie2.base.visual.SimpleVisualProvider; 18 18 import org.sophie2.base.visual.VisualElement; … … 212 212 213 213 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 214 214 provider.parts().add(initSkin()); 215 provider.parts().add(initLang Skin());215 provider.parts().add(initLanguagePack()); 216 216 res.add(provider.asExtension()); 217 217 218 218 } … … 235 235 return part; 236 236 } 237 237 238 private BaseSkinPart initLang Skin() {239 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);238 private BaseSkinPart initLanguagePack() { 239 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 240 240 241 241 part.add(SkinUtil.getElementId(AudioResourceR4.class), 242 242 ResourcesPalette.SEPARATOR_TITLE_PROP_ID, "Audio"); -
modules/org.sophie2.main.func.file/src/main/java/org/sophie2/main/func/file/dialogs/FileIcon.java
10 10 import org.sophie2.base.commons.util.ImageUtil; 11 11 import org.sophie2.base.commons.util.ImmImage; 12 12 import org.sophie2.base.skins.BaseSkinPart; 13 import org.sophie2.base.skins.SimpleSkinPartsProvider;14 13 import org.sophie2.base.skins.Skin; 15 14 import org.sophie2.base.skins.SkinElementId; 16 15 import org.sophie2.base.skins.SkinUtil; 16 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 17 17 import org.sophie2.core.modularity.SimpleSophieExtension; 18 18 import org.sophie2.core.modularity.SophieExtension; 19 19 import org.sophie2.core.modularity.SortKey; -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinsNames.java
1 package org.sophie2.base.skins;2 3 /**4 * The names of the two {@link Skin}s that are currently supported.5 *6 * @author peko, nenko7 *8 */9 public interface SkinsNames {10 /**11 * The name of the default skin.12 */13 public final static String DEFAULT_NAME = "default:en";14 15 /**16 * The name of the default language skin.17 */18 public final static String LANGUAGE_PACK_NAME = "language:en";19 } -
modules/org.sophie2.extra.func.pdf/src/main/java/org/sophie2/extra/func/pdf/PdfModule.java
6 6 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 7 7 import org.sophie2.base.persistence.persister.Persister; 8 8 import org.sophie2.base.skins.BaseSkinPart; 9 import org.sophie2.base.skins.S impleSkinPartsProvider;9 import org.sophie2.base.skins.SkinManager; 10 10 import org.sophie2.base.skins.SkinUtil; 11 import org.sophie2.base.skins. SkinsNames;11 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 12 12 import org.sophie2.base.visual.AutoVisualProvider; 13 13 import org.sophie2.base.visual.SimpleVisualProvider; 14 14 import org.sophie2.base.visual.VisualElement; … … 104 104 105 105 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 106 106 provider.parts().add(initSkin()); 107 provider.parts().add(initLang Skin());107 provider.parts().add(initLanguagePack()); 108 108 res.add(provider.asExtension()); 109 110 // SimpleSkinPartsProvider provider2 = new SimpleSkinPartsProvider();111 // provider2.parts().add(initLangSkin());112 // res.add(provider2.asExtension());113 114 // res.add(initSkin().asExtension());115 // res.add(initLangSkin().asExtension());116 109 } 117 110 118 111 private BaseSkinPart initSkin() { … … 128 121 return part; 129 122 } 130 123 131 private BaseSkinPart initLang Skin() {132 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);124 private BaseSkinPart initLanguagePack() { 125 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 133 126 134 127 part.add(SkinUtil.getElementId(PdfResourceR4.class), 135 128 ResourcesPalette.SEPARATOR_TITLE_PROP_ID, "PDF"); -
modules/org.sophie2.main.func.text/src/main/java/org/sophie2/main/func/text/TextFuncModule.java
8 8 import org.sophie2.base.persistence.persister.Persister; 9 9 import org.sophie2.base.persistence.persister.impl.EnumPersister; 10 10 import org.sophie2.base.skins.BaseSkinPart; 11 import org.sophie2.base.skins.S impleSkinPartsProvider;11 import org.sophie2.base.skins.SkinManager; 12 12 import org.sophie2.base.skins.SkinUtil; 13 import org.sophie2.base.skins. SkinsNames;13 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 14 14 import org.sophie2.base.visual.AutoVisualProvider; 15 15 import org.sophie2.base.visual.VisualElement; 16 16 import org.sophie2.core.modularity.SimpleSophieExtension; … … 139 139 140 140 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 141 141 provider.parts().add(initSkin()); 142 provider.parts().add(initLang Skin());142 provider.parts().add(initLanguagePack()); 143 143 res.add(provider.asExtension()); 144 144 } 145 145 … … 155 155 return part; 156 156 } 157 157 158 private BaseSkinPart initLang Skin() {159 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);158 private BaseSkinPart initLanguagePack() { 159 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 160 160 part.add(SkinUtil.getElementId(HotTextResourceR4.class), 161 161 ResourcesPalette.SEPARATOR_TITLE_PROP_ID, "Texts"); 162 162 -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SimpleSkinPartsProvider.java
1 package org.sophie2.base.skins;2 3 import org.sophie2.core.modularity.SimpleSophieExtension;4 import org.sophie2.core.prolib.impl.BaseProObject;5 import org.sophie2.core.prolib.interfaces.RwListProp;6 7 /**8 * Simple implementation of {@link SkinPartsProvider}.9 *10 * @author tanya11 */12 public class SimpleSkinPartsProvider extends BaseProObject implements SkinPartsProvider {13 14 public RwListProp<SkinPart> parts() {15 return getBean().makeListProp("parts", SkinPart.class);16 }17 18 /**19 * Creates an extension to the extension point with {@link SkinPartsProvider} interface.20 *21 * @return22 * The created extension.23 */24 public SimpleSophieExtension<SkinPartsProvider> asExtension() {25 return new SimpleSophieExtension<SkinPartsProvider>(26 SkinPartsProvider.class, this);27 }28 } -
modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/skins/DefaultSkinItem.java
7 7 import org.sophie2.base.menus.MenuItem; 8 8 import org.sophie2.base.skins.SkinElementId; 9 9 import org.sophie2.base.skins.SkinManager; 10 import org.sophie2.base.skins.SkinsNames;11 10 import org.sophie2.base.visual.skins.ElementPartCreator; 12 11 import org.sophie2.base.visual.skins.SkinPartDef; 13 12 import org.sophie2.base.visual.skins.VisualElementDef; … … 37 36 38 37 @Override 39 38 protected ImmImage computeIcon() { 40 if(SkinManager.get().currentSkin().get(). name().get().equals(SkinsNames.DEFAULT_NAME)) {39 if(SkinManager.get().currentSkin().get().skinName().get().equals(SkinManager.DEFAULT_NAME)) { 41 40 return super.computeIcon(); 42 41 } 43 42 -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinUtil.java
52 52 * @return 53 53 * The value from the current skin. 54 54 */ 55 p ublicstatic <T> T searchSkin(final Class<?> elementClass, String propId,55 private static <T> T searchSkin(final Class<?> elementClass, String propId, 56 56 Class<T> valueClass, Skin skin) { 57 57 58 58 T res = null; … … 68 68 res = skin.getValue(elementId, propId, valueClass); 69 69 } 70 70 71 if (res == null) {72 searchSkin(elementClass, propId, valueClass, skin.fallBack().get());73 }74 75 71 return res; 76 72 } 77 73 … … 108 104 return res; 109 105 } 110 106 111 Skin defaultLanguage Skin = SkinManager.get().getDefaultLanguageSkin();112 res = searchSkin(elementClass, propId, valueClass, defaultLanguage Skin);107 Skin defaultLanguagePack = SkinManager.get().getDefaultLanguagePack(); 108 res = searchSkin(elementClass, propId, valueClass, defaultLanguagePack); 113 109 114 110 return res; 115 111 } -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/Skin.java
5 5 6 6 import org.sophie2.base.commons.structures.ImmTreeList; 7 7 import org.sophie2.base.commons.util.ImmList; 8 import org.sophie2.base.skins.providers.SkinPartsProvider; 8 9 import org.sophie2.core.logging.SophieLog; 9 10 import org.sophie2.core.modularity.SophieExtension; 10 11 import org.sophie2.core.prolib.impl.AutoListProperty; … … 55 56 * 56 57 * @return The property. 57 58 */ 58 p ublicRwProp<String> name() {59 private RwProp<String> name() { 59 60 return getBean().makeValueProp("name", String.class); 60 61 } 61 62 … … 65 66 * 66 67 * @return The property. 67 68 */ 68 RwProp<Skin> fallBack() {69 public RwProp<Skin> fallBack() { 69 70 return getBean().makeValueProp("fallBack", Skin.class); 70 71 } 71 72 … … 81 82 * 82 83 * @return The value, or null if it can not be found. 83 84 */ 84 p ublic<T> T getValue(String recordId, Class<T> valueClass) {85 protected <T> T getValue(String recordId, Class<T> valueClass) { 85 86 assert recordId != null; 86 87 87 88 List<ListEntry> entries = records().get().findAll(recordId); … … 107 108 "Can not locate requested item: " + recordId); 108 109 return null; 109 110 } 110 111 // private Prop<ImmList<SkinPart>> skinParts() {112 // class skinParts extends AutoProperty<ImmList<SkinPart>> {113 //114 // @Override115 // protected ImmList<SkinPart> compute() {116 // ImmList<SkinPart> res = ImmTreeList.<SkinPart>empty();117 //118 // for (SophieExtension<SkinPart> ex :119 // BaseSkinsModule.get().getSkinPartsPoint().extensions().get()) {120 //121 // if (ex.getObject().skinName().get().equals(name().get())) {122 // res = res.add(ex.getObject());123 // }124 // }125 // return res;126 // }127 // }128 // return getBean().makeProp(skinParts.class);129 // }130 111 131 112 private Prop<ImmList<SkinPart>> skinParts() { 132 113 class skinParts extends AutoProperty<ImmList<SkinPart>> { … … 140 121 141 122 for (SkinPart part : ex.getObject().parts().get()) { 142 123 143 if (part.skinName().get().equals( name().get())) {124 if (part.skinName().get().equals(skinName().get())) { 144 125 res = res.add(part); 145 126 } 146 127 } 147 128 } 148 129 149 // for (SophieExtension<SkinPart> e :150 // BaseSkinsModule.get().getSkinPartsPoint().extensions().get()) {151 //152 // if (e.getObject().skinName().get().equals(name().get())) {153 // res = res.add(e.getObject());154 // }155 // }156 157 130 return res; 158 131 } 159 132 } … … 195 168 * 196 169 * @return The values, or empty list if can not be found. 197 170 */ 198 p ublic<T> List<T> getValues(String recordId, Class<T> valueClass) {171 protected <T> List<T> getValues(String recordId, Class<T> valueClass) { 199 172 List<T> res = new ArrayList<T>(); 200 173 201 174 List<ListEntry> entries = records().get().findAll(recordId); … … 230 203 * The property-id. 231 204 * @param valueClass 232 205 * The expected value class. 233 * 206 * 234 207 * @return the found value, or null if not found. 235 208 */ 236 public <T> T getValue(String elementId, String propId, Class<T> valueClass) { 209 protected <T> T getValue(String elementId, String propId, 210 Class<T> valueClass) { 237 211 return getValue(makeRecordId(elementId, propId), valueClass); 238 212 } 239 213 … … 251 225 * 252 226 * @return The values, or empty list if can not be found. 253 227 */ 254 public<T> List<T> getValues(String elementId, String propId,228 protected <T> List<T> getValues(String elementId, String propId, 255 229 Class<T> valueClass) { 256 230 return getValues(makeRecordId(elementId, propId), valueClass); 257 231 } … … 277 251 public Prop<String> skinName() { 278 252 class skinName extends AutoProperty<String> { 279 253 254 @SuppressWarnings("synthetic-access") 280 255 @Override 281 256 protected String compute() { 282 257 String res = name().get(); -
modules/org.sophie2.main.func.links/src/main/java/org/sophie2/main/func/links/LinksHud.java
28 28 import org.sophie2.base.model.book.links.LinkTrigger; 29 29 import org.sophie2.base.skins.Skin; 30 30 import org.sophie2.base.skins.SkinElementId; 31 import org.sophie2.base.skins.SkinManager;32 31 import org.sophie2.base.skins.SkinUtil; 33 32 import org.sophie2.base.visual.BaseSwingVisualElement; 34 33 import org.sophie2.base.visual.skins.ElementPartCreator; … … 168 167 public static final LinkTrigger SELECT_TRIGGER_ITEM = new LinkTrigger() { 169 168 170 169 public String getDescription() { 171 String elemId = SkinUtil.getElementId(AvailableTriggers.class); 172 return SkinManager.get().currentSkin().get().getValue(elemId, SELECT_TRIGGER_TITLE_PROP_ID, String.class); 170 return SkinUtil.getSkinValue(AvailableTriggers.class, SELECT_TRIGGER_TITLE_PROP_ID, String.class); 173 171 } 174 172 175 173 @Override … … 239 237 } 240 238 241 239 public String getDescription() { 242 String elemId = SkinUtil.getElementId(AvailableActions.class); 243 return SkinManager.get().currentSkin().get().getValue(elemId, SELECT_ACTION_TITLE_PROP_ID, String.class); 240 return SkinUtil.getSkinValue(AvailableActions.class, SELECT_ACTION_TITLE_PROP_ID, String.class); 244 241 } 245 242 246 243 @Override -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/BaseSkinsModule.java
3 3 import java.util.List; 4 4 5 5 import org.sophie2.base.config.ConfigKey; 6 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 7 import org.sophie2.base.skins.providers.SkinPartsProvider; 8 import org.sophie2.base.skins.value.loaders.SkinValueLoader; 9 import org.sophie2.base.skins.value.loaders.TextValueLoader; 6 10 import org.sophie2.core.modularity.SimpleSophieExtension; 7 11 import org.sophie2.core.modularity.SophieExtension; 8 12 import org.sophie2.core.modularity.SophieExtensionPoint; … … 81 85 } 82 86 83 87 84 private Skin EntryPoint skinEntryPoint = null;88 private SkinValueLoaderPoint skinEntryValuePoint = null; 85 89 86 90 /** 87 * Creates an extension point with interface {@link Skin Entry}.91 * Creates an extension point with interface {@link SkinValueLoader}. 88 92 * 89 93 * @author tanya 90 94 */ 91 public static class Skin EntryPoint extends SophieExtensionPoint<SkinEntry> {95 public static class SkinValueLoaderPoint extends SophieExtensionPoint<SkinValueLoader> { 92 96 93 97 @Override 94 public Class<Skin Entry> getExtensionClass() {95 return Skin Entry.class;98 public Class<SkinValueLoader> getExtensionClass() { 99 return SkinValueLoader.class; 96 100 } 97 101 } 98 102 99 103 /** 100 * Returns an instance of the {@link Skin EntryPoint} extension point.104 * Returns an instance of the {@link SkinValueLoaderPoint} extension point. 101 105 * @return An extension point. 102 106 */ 103 public Skin EntryPoint getSkinEntryPoint() {104 if (this.skinEntry Point == null) {105 this.skinEntry Point = new SkinEntryPoint();107 public SkinValueLoaderPoint getSkinEntryPoint() { 108 if (this.skinEntryValuePoint == null) { 109 this.skinEntryValuePoint = new SkinValueLoaderPoint(); 106 110 } 107 111 108 return this.skinEntry Point;112 return this.skinEntryValuePoint; 109 113 } 110 114 111 115 … … 133 137 @Override 134 138 protected void defineExtensions(List<SophieExtension<?>> res) { 135 139 res.add(getSimpleSkinPartsProvider().asExtension()); 136 res.add(new SimpleSophieExtension<Skin Entry>(SkinEntry.class, new TextSkinEntry()));137 res.add(new SimpleSophieExtension<ConfigKey>(ConfigKey.class, SkinManager.CURRENT_LANGUAGE_ SKIN));140 res.add(new SimpleSophieExtension<SkinValueLoader>(SkinValueLoader.class, new TextValueLoader())); 141 res.add(new SimpleSophieExtension<ConfigKey>(ConfigKey.class, SkinManager.CURRENT_LANGUAGE_PACK)); 138 142 } 139 143 } -
modules/org.sophie2.author/src/main/java/org/sophie2/author/AuthorModule.java
13 13 import org.sophie2.base.model.resources.r4.ResourceRefR4; 14 14 import org.sophie2.base.model.resources.r4.access.ResourceAccess; 15 15 import org.sophie2.base.skins.BaseSkinPart; 16 import org.sophie2.base.skins.SimpleSkinPartsProvider;17 16 import org.sophie2.base.skins.SkinUtil; 17 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 18 18 import org.sophie2.base.visual.BaseVisualModule; 19 19 import org.sophie2.core.logging.SophieLog; 20 20 import org.sophie2.core.modularity.SophieExtension; -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/TextSkinEntry.java
1 package org.sophie2.base.skins;2 3 import org.sophie2.core.modularity.SimpleSophieExtension;4 5 /**6 * Extension for the extension point defined with {@link SkinEntry} interface.7 *8 * @author tanya9 */10 public class TextSkinEntry implements SkinEntry {11 12 private static String KIND = "text";13 14 public Object createValue(String value) {15 return value;16 }17 18 public String getKind() {19 return KIND;20 }21 22 /**23 * Creates an extension for this {@link SkinEntry}.24 *25 * @return26 * The created extension.27 */28 public SimpleSophieExtension<SkinEntry> asExtension() {29 return new SimpleSophieExtension<SkinEntry>(SkinEntry.class, this);30 }31 } -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/BaseSkinPart.java
37 37 38 38 public RwProp<String> skinName() { 39 39 return getBean().makeValueProp("skinName", String.class, 40 Skin sNames.DEFAULT_NAME);40 SkinManager.DEFAULT_NAME); 41 41 } 42 42 43 43 /** -
modules/org.sophie2.extra.func.scripting/src/main/java/org/sophie2/extra/func/scripting/ScriptingModule.java
8 8 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 9 9 import org.sophie2.base.persistence.persister.Persister; 10 10 import org.sophie2.base.skins.BaseSkinPart; 11 import org.sophie2.base.skins.S impleSkinPartsProvider;11 import org.sophie2.base.skins.SkinManager; 12 12 import org.sophie2.base.skins.SkinUtil; 13 import org.sophie2.base.skins. SkinsNames;13 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 14 14 import org.sophie2.base.visual.AutoVisualProvider; 15 15 import org.sophie2.base.visual.SimpleVisualProvider; 16 16 import org.sophie2.core.modularity.SimpleSophieExtension; … … 115 115 116 116 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 117 117 provider.parts().add(initSkin()); 118 provider.parts().add(initLang Skin());118 provider.parts().add(initLanguagePack()); 119 119 res.add(provider.asExtension()); 120 120 } 121 121 … … 131 131 return part; 132 132 } 133 133 134 private BaseSkinPart initLang Skin() {135 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);134 private BaseSkinPart initLanguagePack() { 135 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 136 136 137 137 part.add(SkinUtil.getElementId(ScriptResourceR4.class), 138 138 ResourcesPalette.SEPARATOR_TITLE_PROP_ID, "Scripts"); -
modules/org.sophie2.main.app.layout/src/main/java/org/sophie2/main/app/layout/MainAppLayoutModule.java
4 4 5 5 import org.sophie2.base.commons.util.position.ImmSize; 6 6 import org.sophie2.base.skins.BaseSkinPart; 7 import org.sophie2.base.skins.S impleSkinPartsProvider;7 import org.sophie2.base.skins.SkinManager; 8 8 import org.sophie2.base.skins.SkinUtil; 9 import org.sophie2.base.skins. SkinsNames;9 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 10 10 import org.sophie2.base.visual.AutoVisualProvider; 11 11 import org.sophie2.base.visual.BaseSwingVisualElement; 12 12 import org.sophie2.base.visual.BaseVisualElement; … … 89 89 90 90 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 91 91 provider.parts().add(makeSkinPart()); 92 provider.parts().add(makeLang SkinPart());92 provider.parts().add(makeLanguagePackPart()); 93 93 res.add(provider.asExtension()); 94 94 95 95 } … … 101 101 return res; 102 102 } 103 103 104 private BaseSkinPart makeLang SkinPart() {105 BaseSkinPart res = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);104 private BaseSkinPart makeLanguagePackPart() { 105 BaseSkinPart res = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 106 106 107 107 res.add(SkinUtil.getElementId(BooksTab.class), 108 108 BaseVisualElement.TITLE_PROP_ID, "Books"); -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/LanguageSkin.java
1 //package org.sophie2.base.skins;2 //3 //public class LanguageSkin extends Skin {4 //5 // public LanguageSkin(String name, LanguageSkin fallback) {6 // super(name, fallback);7 // }8 //} -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/providers/SkinPartsProvider.java
1 package org.sophie2.base.skins ;1 package org.sophie2.base.skins.providers; 2 2 3 import org.sophie2.base.skins.SkinPart; 3 4 import org.sophie2.core.prolib.interfaces.ListProp; 4 5 5 6 /** 6 * Extension point providing a list of base skin parts which are to be used in7 * the current skin.7 * Interface of an extension point that provides a list of base skin parts which 8 * are to be used in the current skin. 8 9 * 9 10 * @author tanya 10 11 */ -
modules/org.sophie2.main.func.image/src/main/java/org/sophie2/main/func/image/ImageModule.java
6 6 import org.sophie2.base.model.book.resource.ImageResourceR4; 7 7 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 8 8 import org.sophie2.base.skins.BaseSkinPart; 9 import org.sophie2.base.skins.S impleSkinPartsProvider;9 import org.sophie2.base.skins.SkinManager; 10 10 import org.sophie2.base.skins.SkinUtil; 11 import org.sophie2.base.skins. SkinsNames;11 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 12 12 import org.sophie2.base.visual.AutoVisualProvider; 13 13 import org.sophie2.base.visual.SimpleVisualProvider; 14 14 import org.sophie2.base.visual.VisualElement; … … 91 91 92 92 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 93 93 provider.parts().add(initSkin()); 94 provider.parts().add(initLang Skin());94 provider.parts().add(initLanguagePack()); 95 95 res.add(provider.asExtension()); 96 96 } 97 97 … … 107 107 return part; 108 108 } 109 109 110 private BaseSkinPart initLang Skin() {111 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);110 private BaseSkinPart initLanguagePack() { 111 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 112 112 part.add(SkinUtil.getElementId(ImageResourceR4.class), 113 113 ResourcesPalette.SEPARATOR_TITLE_PROP_ID, "Images"); 114 114 -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/providers/SimpleSkinPartsProvider.java
1 package org.sophie2.base.skins ;1 package org.sophie2.base.skins.providers; 2 2 3 import org.sophie2.base.skins.SkinPart; 3 4 import org.sophie2.core.modularity.SimpleSophieExtension; 4 5 import org.sophie2.core.prolib.impl.BaseProObject; 5 6 import org.sophie2.core.prolib.interfaces.RwListProp; -
modules/org.sophie2.main.func.templates/src/main/java/org/sophie2/main/func/templates/MainFuncTemplatesModule.java
4 4 5 5 import org.sophie2.base.dialogs.Dialog; 6 6 import org.sophie2.base.skins.BaseSkinPart; 7 import org.sophie2.base.skins.S impleSkinPartsProvider;7 import org.sophie2.base.skins.SkinManager; 8 8 import org.sophie2.base.skins.SkinUtil; 9 import org.sophie2.base.skins. SkinsNames;9 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 10 10 import org.sophie2.base.visual.AutoVisualProvider; 11 11 import org.sophie2.base.visual.BaseVisualElement; 12 12 import org.sophie2.base.visual.SimpleVisualProvider; … … 83 83 } 84 84 85 85 private BaseSkinPart makeSkinPart() { 86 BaseSkinPart res = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);86 BaseSkinPart res = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 87 87 88 88 res.add(SkinUtil.getElementId(BookTemplatesPalette.class), 89 89 BaseVisualElement.TITLE_PROP_ID, "Book Templates"); -
modules/org.sophie2.base.visual/src/main/java/org/sophie2/base/visual/InternalSkinPart.java
61 61 ElementPartCreator epc = new ElementPartCreator() { 62 62 public void add(String propId, Object value) { 63 63 if (value instanceof String) { 64 BaseVisualModule.get().getInternalLang SkinPart().add(elementId, propId, value);64 BaseVisualModule.get().getInternalLanguagePackPart().add(elementId, propId, value); 65 65 } else { 66 66 BaseVisualModule.get().getInternalSkinPart().add(elementId, propId, value); 67 67 } -
modules/org.sophie2.main.func.config/src/main/java/org/sophie2/main/func/config/MainFuncConfigModule.java
3 3 import java.util.List; 4 4 5 5 import org.sophie2.base.skins.BaseSkinPart; 6 import org.sophie2.base.skins.S impleSkinPartsProvider;6 import org.sophie2.base.skins.SkinManager; 7 7 import org.sophie2.base.skins.SkinUtil; 8 import org.sophie2.base.skins. SkinsNames;8 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 9 9 import org.sophie2.base.visual.BaseVisualElement; 10 10 import org.sophie2.base.visual.SimpleVisualProvider; 11 11 import org.sophie2.core.modularity.SophieExtension; … … 63 63 } 64 64 65 65 private BaseSkinPart makeSkinPart() { 66 BaseSkinPart res = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);66 BaseSkinPart res = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 67 67 res.add(SkinUtil.getElementId(ConfigTab.class), BaseVisualElement.TITLE_PROP_ID, "Config"); 68 68 res.add(SkinUtil.getElementId(ConfigTab.class), BaseVisualElement.TOOL_TIP_PROP_ID, "Instruments for application configuration."); 69 69 -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinManager.java
15 15 16 16 import org.sophie2.base.config.ConfigKey; 17 17 import org.sophie2.base.config.ConfigurationManager; 18 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 19 import org.sophie2.base.skins.value.loaders.SkinValueLoader; 18 20 import org.sophie2.core.logging.SophieLog; 19 21 import org.sophie2.core.modularity.FileEntryManager; 20 22 import org.sophie2.core.modularity.SophieExtension; … … 49 51 */ 50 52 public static final String LOOK_AND_FEEL_SKIN_ID = "javax.swing.LookAndFeel"; 51 53 54 private static final int PARTS_NUMBER = 3; 55 52 56 /** 53 57 * Map with all the skins created. 54 58 */ 55 private static Map<String, Skin> skinCache = new HashMap<String, Skin>(); 59 private static Map<String, Skin> skinCache = new HashMap<String, Skin>() { 60 61 private static final long serialVersionUID = -5778280692309048514L; 62 63 @Override 64 public Skin put(String key, Skin value) { 65 return super.put(key.toLowerCase(), value); 66 } 67 68 @Override 69 public Skin get(Object key) { 70 return super.get(((String)key).toLowerCase()); 71 } 72 }; 56 73 57 74 /** 58 75 * Config key for current language skin. 59 76 */ 60 public static final ConfigKey<String> CURRENT_LANGUAGE_ SKIN= ConfigKey.makeKey(61 String.class, "currentLanguage Skin", "skins.config", SkinsNames.LANGUAGE_PACK_NAME);77 public static final ConfigKey<String> CURRENT_LANGUAGE_PACK = ConfigKey.makeKey( 78 String.class, "currentLanguagePack", "skins.config", SkinManager.LANGUAGE_PACK_NAME); 62 79 63 80 64 private Skin defaultLanguageSkin = null; 81 private Skin defaultLanguagePack = null; 82 private Skin defaultPack = null; 83 84 /** 85 * The name of the default skin. 86 */ 87 public final static String DEFAULT_NAME = "default:en"; 88 89 /** 90 * The name of the default language skin. 91 */ 92 public final static String LANGUAGE_PACK_NAME = "language:default"; 65 93 66 94 /** 67 95 * Singleton method to return an instance of the default language skin. … … 69 97 * @return 70 98 * An instance of the default language skin. 71 99 */ 72 public Skin getDefaultLanguage Skin() {73 if (this.defaultLanguage Skin== null) {74 this.defaultLanguage Skin = new Skin(SkinsNames.LANGUAGE_PACK_NAME, null);100 public Skin getDefaultLanguagePack() { 101 if (this.defaultLanguagePack == null) { 102 this.defaultLanguagePack = new Skin(SkinManager.LANGUAGE_PACK_NAME, getDefaultPack()); 75 103 } 76 104 77 return this.defaultLanguageSkin; 105 return this.defaultLanguagePack; 106 } 107 108 /** 109 * Singleton method to return an instance of the default skin. 110 * 111 * @return 112 * An instance of the default skin. 113 */ 114 public Skin getDefaultPack() { 115 if (this.defaultPack == null) { 116 this.defaultPack = new Skin(SkinManager.DEFAULT_NAME, null); 117 } 118 119 return this.defaultPack; 78 120 } 79 121 80 122 /** … … 95 137 //TODO 96 138 } 97 139 140 @SuppressWarnings("synthetic-access") 98 141 @Override 99 142 protected void setup(Void res) { 100 143 101 String currentLanguage = ConfigurationManager.get().getValue(CURRENT_LANGUAGE_ SKIN);144 String currentLanguage = ConfigurationManager.get().getValue(CURRENT_LANGUAGE_PACK); 102 145 103 146 SophieLog.info("Loading skin " + currentLanguage); 104 147 105 148 SimpleSkinPartsProvider provider = BaseSkinsModule.get() 106 149 .getSimpleSkinPartsProvider(); 107 Skin skin = createSkin(currentLanguage, provider.parts().get() );150 Skin skin = createSkin(currentLanguage, provider.parts().get(), SkinManager.LANGUAGE_PACK_NAME); 108 151 currentLanguagePack().set(skin); 109 152 } 110 153 } … … 121 164 * @return 122 165 * The new skin created. 123 166 */ 124 p ublic static Skin createSkin(String skinName, List<SkinPart> parts) {125 167 private static Skin createSkin(String skinName, List<SkinPart> parts, String packName) { 168 126 169 if (SkinManager.skinCache.containsKey(skinName)) { 127 SophieLog. info("Skin loaded from cache");170 SophieLog.trace("Skin loaded from cache " + skinName); 128 171 return SkinManager.skinCache.get(skinName); 129 172 } 130 173 131 174 URL skinDef = FileEntryManager.get().getReadableFileEntry( 132 175 "skins/" + skinName); 133 SophieLog. info(skinDef);176 SophieLog.trace(skinDef); 134 177 135 178 if (skinDef == null) { 136 return new Skin(SkinsNames.LANGUAGE_PACK_NAME, null);179 return SkinManager.skinCache.get(packName); 137 180 } 181 182 loadSkinParts(skinName, parts); 183 184 String fallbackName = getFallbackSkinName(skinDef); 185 Skin fallbackSkin = createSkin(fallbackName, parts, packName); 186 187 Skin skin = new Skin(skinName, fallbackSkin); 188 SkinManager.skinCache.put(skinName, skin); 189 190 return skin; 191 } 192 193 private static String getFallbackSkinName(URL skinDef) { 138 194 139 195 Properties p = new Properties(); 140 196 try { … … 143 199 throw new RuntimeException(e); 144 200 } 145 201 146 loadBaseSkinParts(skinName, parts);147 148 202 String fallback = p.getProperty(FALLBACK_PROP_ID); 149 150 if (NONE_SKIN_VALUE.compareToIgnoreCase(fallback) == 0) { 151 Skin skin = new Skin(skinName, new Skin(SkinsNames.LANGUAGE_PACK_NAME, null)); 152 SkinManager.skinCache.put(skinName, skin); 153 return skin; 154 } 155 156 Skin fallbackSkin = createSkin(fallback, parts); 157 Skin skin = new Skin(skinName, fallbackSkin); 158 159 160 SkinManager.skinCache.put(skinName, skin); 161 return skin; 203 return fallback; 162 204 } 163 205 164 private static void load BaseSkinParts(String skinName, List<SkinPart> parts) {206 private static void loadSkinParts(String skinName, List<SkinPart> parts) { 165 207 int index = skinName.lastIndexOf("."); 166 208 String begin = skinName.substring(0, index); 167 209 String end = skinName.substring(index + 1); 168 String language SkinDir = begin + "_" + end;210 String languagePackDir = begin + "_" + end; 169 211 170 List<String> partEntries = FileEntryManager.get().listFileEntries("skins/" + languageSkinDir); 171 SophieLog.info("Loading parts"); 212 List<String> partEntries = FileEntryManager.get().listFileEntries("skins/" + languagePackDir); 172 213 for (String part : partEntries) { 173 SophieLog.info("Loading part " + part); 214 215 SophieLog.trace("Loading part " + part); 174 216 175 217 int relativeIndex = part.lastIndexOf("skins"); 176 218 String relativePath = part.substring(relativeIndex); 177 SophieLog.info(relativePath); 219 178 220 URL partFile = FileEntryManager.get().getReadableFileEntry(relativePath); 179 221 180 222 BaseSkinPart skinPart = new BaseSkinPart(skinName); 181 getContents(skinName, partFile, skinPart);223 loadPart(skinName, partFile, skinPart); 182 224 parts.add(skinPart); 183 225 } 184 226 } 185 227 186 private static void getContents(String skinName, URL partFile,228 private static void loadPart(String skinName, URL partFile, 187 229 BaseSkinPart skinPart) { 188 SophieLog.info("part file "+ partFile); 230 231 BufferedReader input = null; 232 189 233 try { 190 BufferedReaderinput = new BufferedReader(234 input = new BufferedReader( 191 235 new InputStreamReader(partFile.openStream(), "UTF-8")); 192 try {193 194 195 if (!line.equals("") && !line.startsWith("#")) {196 initRecord(skinName, skinPart, line);197 }236 237 String line = null; 238 while ((line = input.readLine()) != null) { 239 String trimmed = line.trim(); 240 if (!trimmed.equals("") && !trimmed.startsWith("#")) { 241 initRecord(skinName, skinPart, line); 198 242 } 199 } finally {200 input.close();201 243 } 244 202 245 } catch (IOException ex) { 203 246 throw new RuntimeException(ex); 247 } finally { 248 if (input != null) { 249 try { 250 input.close(); 251 } catch (IOException e) { 252 throw new RuntimeException(e); 253 } 254 } 204 255 } 205 256 } 206 207 257 208 258 private static void initRecord(String skinName, SkinPart part, String toPart) { 209 259 210 String[] idParts = toPart.trim().split(" : "); 211 Object value = createValue(idParts[1], idParts[2], skinName); 260 String[] idParts = toPart.trim().split(" : ", PARTS_NUMBER); 261 262 if (idParts.length == PARTS_NUMBER) { 263 Object value = createValue(idParts[1], idParts[2], skinName); 212 264 213 if (value != null) { 214 part.records().get().add( 215 new ListEntry(idParts[0], new SkinRecord(idParts[0], value))); 265 if (value != null) { 266 part.records().get().add( 267 new ListEntry(idParts[0], new SkinRecord(idParts[0], 268 value))); 269 } 270 } else { 271 SophieLog.error("The line is not valid!!!"); 216 272 } 217 273 } 218 274 219 private static final Object createValue(String type, String value, String skinName) { 220 221 assert type != null; 222 assert type != ""; 223 224 ProList<SophieExtension<SkinEntry>> extensions = BaseSkinsModule.get().getSkinEntryPoint().extensions().get(); 225 226 for (SophieExtension<SkinEntry> entry : extensions) { 227 if (type.equals(entry.getObject().getKind())) { 275 private static final Object createValue(String kind, String value, 276 String skinName) { 277 278 assert kind != null && kind != "" : "The kind of the value that is to be created should " + 279 "not be null and should not be an empty string"; 280 281 ProList<SophieExtension<SkinValueLoader>> extensions = BaseSkinsModule 282 .get().getSkinEntryPoint().extensions().get(); 283 284 for (SophieExtension<SkinValueLoader> entry : extensions) { 285 if (kind.equals(entry.getObject().getKind())) { 228 286 Object res = entry.getObject().createValue(value); 229 287 return res; 230 288 } 231 289 } 232 290 233 291 return null; 234 } 235 292 } 236 293 237 294 /** 238 295 * The current Skin that is in use. … … 307 364 308 365 // XXX: singleton 309 366 private SkinManager() { 310 Skin currentSkin = new Skin(SkinsNames.DEFAULT_NAME, null);367 Skin currentSkin = getDefaultPack(); 311 368 currentSkin().set(currentSkin); 312 skinCache.put(Skin sNames.DEFAULT_NAME, currentSkin);369 skinCache.put(SkinManager.DEFAULT_NAME, currentSkin); 313 370 314 Skin currentLanguageSkin = new Skin(SkinsNames.LANGUAGE_PACK_NAME, new Skin(SkinsNames.DEFAULT_NAME, null)); 315 currentLanguagePack().set(currentLanguageSkin); 316 skinCache.put(SkinsNames.LANGUAGE_PACK_NAME, currentLanguageSkin); 371 Skin currentLanguagePack = getDefaultLanguagePack(); 372 currentLanguagePack().set(currentLanguagePack); 373 skinCache.put(SkinManager.LANGUAGE_PACK_NAME, currentLanguagePack); 374 375 skinCache.put(NONE_SKIN_VALUE, null); 317 376 } 318 377 319 378 private static SkinManager instance = null; -
modules/org.sophie2.dev/src/test/java/org/sophie2/dev/author/ResourcePreviewSystemTest.java
13 13 import org.sophie2.base.model.resources.r4.resources.ResourceH; 14 14 import org.sophie2.base.skins.BaseSkinPart; 15 15 import org.sophie2.base.skins.Message; 16 import org.sophie2.base.skins.S impleSkinPartsProvider;16 import org.sophie2.base.skins.SkinManager; 17 17 import org.sophie2.base.skins.SkinUtil; 18 import org.sophie2.base.skins. SkinsNames;18 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 19 19 import org.sophie2.base.visual.AutoVisualProvider; 20 20 import org.sophie2.base.visual.BaseSwingVisualElement; 21 21 import org.sophie2.base.visual.BaseVisualElement; … … 94 94 ResourcePreviewProvider.class, 95 95 new DummyResourcePreviewProvider())); 96 96 97 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);97 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 98 98 part.add(SkinUtil.getElementId(VideoFilteringButton.class), BaseVisualElement.TITLE_PROP_ID, "TestingResource"); 99 99 100 100 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); -
modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/SkinsMenuLogic.java
3 3 import org.sophie2.base.menus.MenuItem; 4 4 import org.sophie2.base.skins.Skin; 5 5 import org.sophie2.base.skins.SkinManager; 6 import org.sophie2.base.skins.SkinsNames;7 6 import org.sophie2.core.modularity.SortKey; 8 7 import org.sophie2.core.mvc.EventFilterBuilder; 9 8 import org.sophie2.core.mvc.OperationDef; … … 32 31 33 32 public boolean handle(EventR3 event) { 34 33 SkinManager.get().currentSkin().set( 35 new Skin(Skin sNames.DEFAULT_NAME, null));34 new Skin(SkinManager.DEFAULT_NAME, null)); 36 35 37 36 return true; 38 37 } -
modules/org.sophie2.main.func.timelines/src/main/java/org/sophie2/main/func/timelines/MainFuncTimelinesModule.java
6 6 import org.sophie2.base.model.book.links.LinkActionProvider; 7 7 import org.sophie2.base.persistence.persister.Persister; 8 8 import org.sophie2.base.skins.BaseSkinPart; 9 import org.sophie2.base.skins.SimpleSkinPartsProvider;10 9 import org.sophie2.base.skins.SkinUtil; 10 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 11 11 import org.sophie2.base.visual.AutoVisualProvider; 12 12 import org.sophie2.base.visual.BaseSwingVisualElement; 13 13 import org.sophie2.base.visual.SimpleVisualProvider; -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/value/loaders/TextValueLoader.java
1 package org.sophie2.base.skins ;1 package org.sophie2.base.skins.value.loaders; 2 2 3 3 import org.sophie2.core.modularity.SimpleSophieExtension; 4 4 5 5 /** 6 * Extension for the extension point defined with {@link SkinEntry} interface. 6 * Provides an extension for the extension point defined with {@link SkinValueLoader} interface. 7 * It is responsible for values which kind is <i>text</i> such as titles or tool-tips. 7 8 * 8 9 * @author tanya 9 10 */ 10 public class Text SkinEntry implements SkinEntry{11 public class TextValueLoader implements SkinValueLoader { 11 12 12 13 private static String KIND = "text"; 13 14 … … 20 21 } 21 22 22 23 /** 23 * Creates an extension for this {@link Skin Entry}.24 * Creates an extension for this {@link SkinValueLoader}. 24 25 * 25 26 * @return 26 27 * The created extension. 27 28 */ 28 public SimpleSophieExtension<Skin Entry> asExtension() {29 return new SimpleSophieExtension<Skin Entry>(SkinEntry.class, this);29 public SimpleSophieExtension<SkinValueLoader> asExtension() { 30 return new SimpleSophieExtension<SkinValueLoader>(SkinValueLoader.class, this); 30 31 } 31 32 } -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/value/loaders/SkinValueLoader.java
1 package org.sophie2.base.skins ;1 package org.sophie2.base.skins.value.loaders; 2 2 3 3 /** 4 * An extension point for entries for the skin. (text, icon,..) 4 * Interface of an extension point for records for a skin. 5 * When the skin is to be loaded from a file, the values of the records are Strings that should be parsed. 6 * Depending on that whether the value of the record should be string (for titles or tool-tips for example), 7 * or should be an icon, it should be parsed in different way. The extension point helps to define whether 8 * the value should be parsed to string or icon and finds the appropriate extension that will parse the value. 5 9 * 6 10 * @author tanya 7 11 */ 8 public interface Skin Entry{12 public interface SkinValueLoader { 9 13 10 14 /** 11 * Returns the kind of the entry.15 * Returns the kind of the value of the record. The kind can be text or icon for example. 12 16 * 13 17 * @return 14 * The kind of the entry.18 * The kind of the value of the record. 15 19 */ 16 20 public String getKind(); 17 21 18 22 /** 19 * Creates an object and returns is. 23 * Creates an object and returns is. Parse the string to the desired object. 20 24 * 21 25 * @param value 22 * The value needed for an object to be created. 26 * The value needed for an object to be created. The string that should be parsed. 23 27 * @return 24 * The object created .28 * The object created after parsing of the string. 25 29 */ 26 30 public Object createValue(String value); 27 31 } -
modules/org.sophie2.main.skin.alternative/src/main/java/org/sophie2/main/skin/alternative/AlternativeSkinsModule.java
3 3 import java.util.List; 4 4 5 5 import org.sophie2.base.skins.BaseSkinPart; 6 import org.sophie2.base.skins.SimpleSkinPartsProvider;7 6 import org.sophie2.base.skins.Skin; 8 7 import org.sophie2.base.skins.SkinManager; 9 8 import org.sophie2.base.skins.SkinPart; 9 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 10 10 import org.sophie2.core.modularity.SophieExtension; 11 11 import org.sophie2.core.modularity.SophieExtensionPoint; 12 12 import org.sophie2.core.modularity.SophieModule; -
modules/org.sophie2.base.skins/src/test/java/org/sophie2/base/skins/SkinsTest.java
2 2 3 3 import java.util.List; 4 4 5 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 5 6 import org.sophie2.core.modularity.FakeModuleRegistry; 6 7 import org.sophie2.core.modularity.SophieExtension; 7 8 import org.sophie2.core.modularity.SophieExtensionPoint; … … 75 76 private void makeSkinParts(List<SophieExtension<?>> list) { 76 77 // the default skin will have two SkinParts. 77 78 // create skin parts and add skin records to them. 78 BaseSkinPart part1 = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);79 BaseSkinPart part2 = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);79 BaseSkinPart part1 = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 80 BaseSkinPart part2 = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 80 81 // the skinpart for the third skin. 81 82 BaseSkinPart part4 = new BaseSkinPart(COOL_SKIN_NAME); 82 83 … … 172 173 FakeModuleRegistry.start(BaseSkinsModule.class, DemoModule.class); 173 174 174 175 // the default skin. 175 this.defaultSkin = new Skin(Skin sNames.DEFAULT_NAME, null);176 this.defaultSkin = new Skin(SkinManager.DEFAULT_NAME, null); 176 177 177 178 // the third skin. 178 179 this.coolSkin3 = new Skin(COOL_SKIN_NAME, this.defaultSkin); -
modules/org.sophie2.base.skins/src/main/java/org/sophie2/base/skins/SkinEntry.java
1 package org.sophie2.base.skins;2 3 /**4 * An extension point for entries for the skin. (text, icon,..)5 *6 * @author tanya7 */8 public interface SkinEntry {9 10 /**11 * Returns the kind of the entry.12 *13 * @return14 * The kind of the entry.15 */16 public String getKind();17 18 /**19 * Creates an object and returns is.20 *21 * @param value22 * The value needed for an object to be created.23 * @return24 * The object created.25 */26 public Object createValue(String value);27 } -
modules/org.sophie2.main.app.menus/src/main/java/org/sophie2/main/app/menus/MainAppMenusModule.java
6 6 import org.sophie2.base.menus.MenuItem; 7 7 import org.sophie2.base.menus.MenuMember; 8 8 import org.sophie2.base.skins.BaseSkinPart; 9 import org.sophie2.base.skins.S impleSkinPartsProvider;9 import org.sophie2.base.skins.SkinManager; 10 10 import org.sophie2.base.skins.SkinUtil; 11 import org.sophie2.base.skins. SkinsNames;11 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 12 12 import org.sophie2.base.visual.AutoVisualProvider; 13 13 import org.sophie2.base.visual.BaseVisualElement; 14 14 import org.sophie2.base.visual.NullVisualProvider; … … 181 181 182 182 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 183 183 provider.parts().add(makeSkinPart()); 184 provider.parts().add(makeLang SkinPart());184 provider.parts().add(makeLanguagePackPart()); 185 185 res.add(provider.asExtension()); 186 186 } 187 187 … … 200 200 201 201 } 202 202 203 private BaseSkinPart makeLang SkinPart() {204 BaseSkinPart res = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);203 private BaseSkinPart makeLanguagePackPart() { 204 BaseSkinPart res = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 205 205 206 206 res.add(SkinUtil.getElementId(MinimizeAllItem.class), BaseVisualElement.TITLE_PROP_ID, 207 207 "Minimize All"); -
modules/org.sophie2.base.visual/src/main/java/org/sophie2/base/visual/BaseVisualModule.java
3 3 import java.util.Comparator; 4 4 import java.util.List; 5 5 6 import org.sophie2.base.skins.S impleSkinPartsProvider;7 import org.sophie2.base.skins. SkinsNames;6 import org.sophie2.base.skins.SkinManager; 7 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 8 8 import org.sophie2.base.visual.interaction.InteractionLogic; 9 9 import org.sophie2.core.modularity.SophieExtension; 10 10 import org.sophie2.core.modularity.SophieExtensionPoint; … … 80 80 81 81 private VisualPoint visualPoint; 82 82 private InternalSkinPart internalSkinPart; 83 private InternalSkinPart internalLang SkinPart;83 private InternalSkinPart internalLanguagePackPart; 84 84 85 85 /** 86 86 * Gets the extension point for visual element provides. … … 118 118 * 119 119 * @return The internal skin part. 120 120 */ 121 protected InternalSkinPart getInternalLang SkinPart() {122 if (this.internalLang SkinPart == null) {123 this.internalLang SkinPart = new InternalSkinPart();124 this.internalLang SkinPart.skinName().set(SkinsNames.LANGUAGE_PACK_NAME);121 protected InternalSkinPart getInternalLanguagePackPart() { 122 if (this.internalLanguagePackPart == null) { 123 this.internalLanguagePackPart = new InternalSkinPart(); 124 this.internalLanguagePackPart.skinName().set(SkinManager.LANGUAGE_PACK_NAME); 125 125 } 126 return this.internalLang SkinPart;126 return this.internalLanguagePackPart; 127 127 } 128 128 129 129 … … 139 139 this.simpleSkinPartsProvider = new SimpleSkinPartsProvider(); 140 140 141 141 this.simpleSkinPartsProvider.parts().add(getInternalSkinPart()); 142 this.simpleSkinPartsProvider.parts().add(getInternalLang SkinPart());142 this.simpleSkinPartsProvider.parts().add(getInternalLanguagePackPart()); 143 143 } 144 144 145 145 return this.simpleSkinPartsProvider; -
modules/org.sophie2.main.func.resources/src/main/java/org/sophie2/main/func/resources/MainFuncResourcesModule.java
17 17 import org.sophie2.base.persistence.persister.Persister; 18 18 import org.sophie2.base.persistence.persister.impl.EnumPersister; 19 19 import org.sophie2.base.skins.BaseSkinPart; 20 import org.sophie2.base.skins.S impleSkinPartsProvider;20 import org.sophie2.base.skins.SkinManager; 21 21 import org.sophie2.base.skins.SkinUtil; 22 import org.sophie2.base.skins. SkinsNames;22 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 23 23 import org.sophie2.base.visual.AutoVisualProvider; 24 24 import org.sophie2.base.visual.BaseSwingVisualElement; 25 25 import org.sophie2.base.visual.BaseVisualElement; … … 286 286 res.add(SimpleSophieExtension.create(ResourcesPaletteSeparator.class, 287 287 new BaseResourcesPaletteSeparator(ImageResourceR4.KIND, "ggg-image-separator"))); 288 288 289 BaseSkinPart partChooser = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);289 BaseSkinPart partChooser = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 290 290 String choserID = SkinUtil.getElementId(BinDataChooser.class); 291 291 partChooser.add(choserID, BinDataChooser.COPY_TITLE_PROP_ID, "Copy to '_files'"); 292 292 partChooser.add(choserID, BinDataChooser.COPY_TOOL_TIP_PROP_ID, "Copy the resource to the '_files' folder of the book"); … … 301 301 SimpleSkinPartsProvider provider = new SimpleSkinPartsProvider(); 302 302 provider.parts().add(partChooser); 303 303 provider.parts().add(initSkin()); 304 provider.parts().add(initLang Skin());304 provider.parts().add(initLanguagePack()); 305 305 res.add(provider.asExtension()); 306 306 307 307 } … … 348 348 return part; 349 349 } 350 350 351 private BaseSkinPart initLang Skin() {352 BaseSkinPart part = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);351 private BaseSkinPart initLanguagePack() { 352 BaseSkinPart part = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 353 353 part.add(SkinUtil.getElementId(AdvancedCheckBox.class), BaseVisualElement.TITLE_PROP_ID, "Advanced"); 354 354 part.add(SkinUtil.getElementId(AdvancedCheckBox.class), BaseVisualElement.TOOL_TIP_PROP_ID, "Show all resources"); 355 355 -
modules/org.sophie2.extra.comment/src/main/java/org/sophie2/extra/comment/CommentModule.java
7 7 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 8 8 import org.sophie2.base.persistence.persister.Persister; 9 9 import org.sophie2.base.skins.BaseSkinPart; 10 import org.sophie2.base.skins.SimpleSkinPartsProvider;11 10 import org.sophie2.base.skins.SkinUtil; 11 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 12 12 import org.sophie2.base.visual.AutoVisualProvider; 13 13 import org.sophie2.base.visual.SimpleVisualProvider; 14 14 import org.sophie2.core.modularity.SimpleSophieExtension; -
modules/org.sophie2.reader/src/main/java/org/sophie2/reader/ReaderModule.java
18 18 import org.sophie2.base.model.resources.r4.LocationPrefix; 19 19 import org.sophie2.base.model.resources.r4.ResourceRefR4; 20 20 import org.sophie2.base.skins.BaseSkinPart; 21 import org.sophie2.base.skins.SimpleSkinPartsProvider;22 21 import org.sophie2.base.skins.SkinUtil; 22 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 23 23 import org.sophie2.base.visual.BaseVisualModule; 24 24 import org.sophie2.core.logging.SophieLog; 25 25 import org.sophie2.core.modularity.SophieExtension; -
modules/org.sophie2.extra.func.embedded/src/main/java/org/sophie2/extra/func/embedded/EmbeddedBooksModule.java
5 5 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 6 6 import org.sophie2.base.persistence.persister.Persister; 7 7 import org.sophie2.base.skins.BaseSkinPart; 8 import org.sophie2.base.skins.S impleSkinPartsProvider;8 import org.sophie2.base.skins.SkinManager; 9 9 import org.sophie2.base.skins.SkinUtil; 10 import org.sophie2.base.skins. SkinsNames;10 import org.sophie2.base.skins.providers.SimpleSkinPartsProvider; 11 11 import org.sophie2.base.visual.AutoVisualProvider; 12 12 import org.sophie2.base.visual.BaseVisualElement; 13 13 import org.sophie2.base.visual.SimpleVisualProvider; … … 116 116 } 117 117 118 118 private BaseSkinPart makeSkinPart() { 119 BaseSkinPart res = new BaseSkinPart(Skin sNames.LANGUAGE_PACK_NAME);119 BaseSkinPart res = new BaseSkinPart(SkinManager.LANGUAGE_PACK_NAME); 120 120 res.add(SkinUtil.getElementId(EmbeddedBooksPalette.class), 121 121 BaseVisualElement.TITLE_PROP_ID, "Embedded Books"); 122 122 res.add(SkinUtil.getElementId(EmbeddedBooksPalette.class),