Revision: feb2feafc7f5 Branch: rt2111-styleConf Author: Leon Blakey <lblakey@xxxxxxx> Date: Wed Mar 4 18:12:09 2015 UTCLog: Begin style migration to UTD and breaking build. Added BBDocument.getEngine(), replaced a few instances of Styles with IStyle, cleaned up some references
https://code.google.com/p/brailleblaster/source/detail?r=feb2feafc7f5 Modified: /src/main/org/brailleblaster/document/BBDocument.java /src/main/org/brailleblaster/perspectives/braille/Manager.java/src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java /src/main/org/brailleblaster/perspectives/braille/eventQueue/StyleEvent.java
/src/main/org/brailleblaster/perspectives/braille/messages/Message.java /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java =======================================--- /src/main/org/brailleblaster/document/BBDocument.java Thu Feb 26 18:17:04 2015 UTC +++ /src/main/org/brailleblaster/document/BBDocument.java Wed Mar 4 18:12:09 2015 UTC
@@ -61,7 +61,7 @@ import org.brailleblaster.perspectives.Controller; import org.brailleblaster.settings.SettingsManager; import org.brailleblaster.utd.UTDTranslationEngine; -import org.brailleblaster.utd.config.StyleDefinitions; +import org.brailleblaster.utd.config.XMLConfigHandler; import org.brailleblaster.util.CheckLiblouisutdmlLog; import org.brailleblaster.util.FileUtils; import org.brailleblaster.util.Notify; @@ -89,21 +89,36 @@ private String systemId; private String publicId; protected SettingsManager sm; - protected SemanticFileHandler semHandler; protected LocaleHandler lh; - protected UTDTranslationEngine engine; + protected final UTDTranslationEngine engine; + protected final XMLConfigHandler utdConfig; + + //Style TODO: Once this class is unit tested absorb the other constructors + private BBDocument(Controller dm, boolean unused) { + this.dm = dm; + + try { + engine = new UTDTranslationEngine(); + //Style TODO: Somehow automagically load the correct config+ utdConfig = new XMLConfigHandler(new File("utd-config"), "nimas", new File("utd-config/styleDefs.xml"));
+ engine.setActionMap(utdConfig.loadActions()); + engine.setStyleDefinitions(utdConfig.loadStyleDefinitions()); + engine.setStyleMap(utdConfig.loadStyle(engine.getStyleDefinitions())); + } catch(Exception e) { + throw new RuntimeException("Could not initialize UTD", e); + } + } /** Base constructor for initializing a new document* @param dm: Document Manager for relaying information between DOM and view
*/ public BBDocument(Controller dm){ - this.dm = dm; + this(dm, true); lh = new LocaleHandler(); missingSemanticsList = new ArrayList<String>(); mistranslationList = new ArrayList<String>(); - semHandler = new SemanticFileHandler(dm.getCurrentConfig()); sm = new SettingsManager(dm.getCurrentConfig()); - engine = new UTDTranslationEngine(); +engine.getBrailleSettings().setMainTranslationTable(BBIni.getProgramDataPath() + BBIni.getFileSep() + "liblouis" + BBIni.getFileSep() + "tables" + BBIni.getFileSep() + "en-us-g2.ctb");
engine.getBrailleSettings().setUseAsciiBraille(true); } @@ -113,12 +128,11 @@* @param doc: XOM Document, the DOM already built for the currently open document
*/ public BBDocument(Controller dm, Document doc){ - this.dm = dm; + this(dm, true); this.doc = doc; lh = new LocaleHandler(); missingSemanticsList = new ArrayList<String>(); mistranslationList = new ArrayList<String>(); - semHandler = new SemanticFileHandler(dm.getCurrentConfig()); sm = new SettingsManager(dm.getCurrentConfig()); } @@ -389,9 +403,10 @@ else fileName = dm.getWorkingPath();- if(fu.exists(BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(fileName) + ".sem")){ - semFile = "semanticFiles "+ semHandler.getDefaultSemanticsFiles() + "," + BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(fileName) + ".sem" + "\n";
- } + //Style TODO: depends on .sem+// if(fu.exists(BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(fileName) + ".sem")){ +// semFile = "semanticFiles "+ semHandler.getDefaultSemanticsFiles() + "," + BBIni.getTempFilesPath() + BBIni.getFileSep() + fu.getFileName(fileName) + ".sem" + "\n";
+// }boolean result = lutdml.translateFile (config, inFile, filePath, logFile, semFile + "formatFor brf\n" + sm.getSettings(), 0);
deleteFile(inFile); @@ -580,7 +595,8 @@ public void resetBBDocument(String config){ deleteDOM(); sm = new SettingsManager(config); - semHandler.resetSemanticHandler(config); + //Style TODO: reset + //semHandler.resetSemanticHandler(config); } @@ -615,10 +631,6 @@ else if(publicId == null && systemId != null)d.setDocType(new DocType(this.getRootElement().getLocalName(), systemId));
} - - public SemanticFileHandler getSemanticFileHandler(){ - return semHandler; - } /** Queries the document using xpath * @param query: xpath query @@ -636,8 +648,8 @@ public int getLinesPerPage(){ return sm.getLinesPerPage(); } - - public StyleDefinitions getStyleDefinitions() { - return engine.getStyleDefinitions(); + + public UTDTranslationEngine getEngine() { + return engine; } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/Manager.java Tue Mar 3 19:40:45 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/Manager.java Wed Mar 4 18:12:09 2015 UTC
@@ -54,7 +54,6 @@ import org.brailleblaster.embossers.EmbossersManager; import org.brailleblaster.localization.LocaleHandler; import org.brailleblaster.perspectives.Controller; -import org.brailleblaster.perspectives.braille.document.BBSemanticsTable; import org.brailleblaster.perspectives.braille.document.BrailleDocument; import org.brailleblaster.perspectives.braille.eventQueue.EventFrame; import org.brailleblaster.perspectives.braille.eventQueue.QueueManager; @@ -113,7 +112,6 @@ StyleManager sm; FormLayout layout; - BBSemanticsTable styles; String documentName = null; String logFile = "Translate.log"; String configSettings = null; @@ -131,10 +129,10 @@ //Constructor that sets things up for a new document. public Manager(WPManager wp, String docName) { super(wp); + logger.debug("WPManager {} docName {}", wp, docName); queueManager = new QueueManager(); simBrailleDisplayed = loadSimBrailleProperty(); fontManager = new FontManager(this); - styles = new BBSemanticsTable(BBIni.getDefaultConfigFile()); documentName = docName; item = new TabItem(wp.getFolder(), 0); containerSash = new SashForm(wp.getFolder(),SWT.HORIZONTAL); @@ -184,7 +182,6 @@ this.arch = arch; simBrailleDisplayed = loadSimBrailleProperty(); fontManager = new FontManager(this); - styles = new BBSemanticsTable(arch.getCurrentConfig()); documentName = arch.getOrigDocPath(); this.item = item; containerSash = new SashForm(wp.getFolder(),SWT.NONE); @@ -204,11 +201,12 @@ this.item.setControl(containerSash); initializeDocumentTab(); - document = new BrailleDocument(this, styles); + document = new BrailleDocument(this); pb = new BBProgressBar(wp.getShell()); fontManager.setFontWidth(simBrailleDisplayed); srch = new SearchDialog(wp.getShell(), SWT.NONE, this); - document = new BrailleDocument(this, doc, this.styles); + //This shouldn't be called twice + //document = new BrailleDocument(this, doc, this.styles); vi = ViewFactory.createUpdater(arch, document, text, braille, treeView); containerSash.setRedraw(false); @@ -411,7 +409,7 @@ } } catch(Exception e){ - e.printStackTrace(); + //e.printStackTrace(); logger.error("Unforeseen Exception", e); } } @@ -977,7 +975,8 @@ fileName = fu.getFileName(arch.getWorkingFilePath());if(fu.exists(BBIni.getTempFilesPath() + BBIni.getFileSep() + fileName + ".sem")) - initializeAllViews(documentName, path, "semanticFiles " + document.getSemanticFileHandler().getDefaultSemanticsFiles() +"," + BBIni.getTempFilesPath() + BBIni.getFileSep() + fileName + ".sem\n");
+ //Style TODO: Sem file dependency+ initializeAllViews(documentName, path, /*"semanticFiles " + document.getSemanticFileHandler().getDefaultSemanticsFiles() +"," +*/ BBIni.getTempFilesPath() + BBIni.getFileSep() + fileName + ".sem\n");
else initializeAllViews(documentName, path, null); =======================================--- /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Mon Feb 9 18:34:55 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/document/BrailleDocument.java Wed Mar 4 18:12:09 2015 UTC
@@ -23,20 +23,19 @@import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
import org.brailleblaster.perspectives.braille.mapping.maps.MapList; import org.brailleblaster.perspectives.braille.messages.Message; +import org.brailleblaster.perspectives.braille.stylers.ElementUtils;import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
import org.eclipse.swt.SWT; public class BrailleDocument extends BBDocument { private int idCount = -1; - private BBSemanticsTable table; /**Base constructor for initializing a new document * @param dm :Document Manager for interacting with views * @param table :Semantics table containing style information */ - public BrailleDocument(Manager dm, BBSemanticsTable table) { + public BrailleDocument(Manager dm) { super(dm); - this.table = table; }/** Base constructor for when perspectives are switched and the XOM Document is passed to a Document specific to the view
@@ -44,9 +43,8 @@* @param doc :XOM Document, the DOM already built for the currently open document
* @param table :Semantics table containing style information */ - public BrailleDocument(Manager dm, Document doc, BBSemanticsTable table) { + public BrailleDocument(Manager dm, Document doc) { super(dm, doc); - this.table = table; } /** Method via which update and remove procedures are handled @@ -108,8 +106,11 @@ * @param elem : Name of element to insert */public void insertElement(ViewInitializer vi, MapList list, TextMapElement current, int textOffset, int brailleOffset, int index,String elem){
- String type = this.semHandler.getDefault(elem); - Element p = makeElement(elem, "semantics", "style," + type);+ //Style TODO: There is no concept of looking up styles by element name in UTD
+// String type = this.semHandler.getDefault(elem); +// Element p = makeElement(elem, "semantics", "style," + type); + Element p = makeElement(elem, "style", ""); + //Add new attribute for epub aside and for nimas prodnoteif ((elem.equalsIgnoreCase("prodnote") )||( elem.equalsIgnoreCase("aside"))){
p.addAttribute(new Attribute("render", "optional")); @@ -119,14 +120,15 @@ p.appendChild(new Text("")); + //Style TODO: What does this do Element parent = current.parentElement(); int nodeIndex = 0; - if(table.getSemanticTypeFromAttribute(parent).equals("style")){ + if(ElementUtils.containsStyle(parent)){ parent = (Element)parent.getParent(); nodeIndex = parent.indexOf(current.parentElement()); } else { - while(table.getSemanticTypeFromAttribute(parent).equals("action")){ + while(ElementUtils.containsAction(parent)){ nodeIndex = parent.getParent().indexOf(parent); parent = (Element)parent.getParent(); } @@ -761,8 +763,11 @@ */ public Element getParent(Node n, boolean ignoreInlineElement){ Element parent = (Element)n.getParent();+ //Style TODO: This if could probably be removed as all calls set it to true
if(ignoreInlineElement){- while(attributeExists(parent, "semantics") && parent.getAttribute("semantics").getValue().contains("action")){
+ //Style TODO: why does this ignore actions?+ //while(attributeExists(parent, "semantics") && parent.getAttribute("semantics").getValue().contains("action")){
+ while(attributeExists(parent, "action")){ parent = (Element)parent.getParent(); } } =======================================--- /src/main/org/brailleblaster/perspectives/braille/eventQueue/StyleEvent.java Wed Feb 4 13:36:20 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/eventQueue/StyleEvent.java Wed Mar 4 18:12:09 2015 UTC
@@ -1,13 +1,14 @@ package org.brailleblaster.perspectives.braille.eventQueue;-import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles;
+import org.brailleblaster.utd.Style; + public class StyleEvent extends Event { int listIndex, sectionIndex; - Styles style; + Style style; String config;- public StyleEvent(int listIndex, int sectionIndex, int textOffset, int brailleOffset, Styles style, String config){ + public StyleEvent(int listIndex, int sectionIndex, int textOffset, int brailleOffset, Style style, String config){
super(EventTypes.Style_Change, textOffset, brailleOffset); this.listIndex = listIndex; this.sectionIndex = sectionIndex; @@ -15,7 +16,7 @@ this.config = config; } - public Styles getStyle(){ + public Style getStyle(){ return style; } =======================================--- /src/main/org/brailleblaster/perspectives/braille/messages/Message.java Mon Feb 16 18:10:33 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/messages/Message.java Wed Mar 4 18:12:09 2015 UTC
@@ -33,11 +33,13 @@ import java.util.ArrayList; import java.util.HashMap;-import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; import org.brailleblaster.perspectives.braille.mapping.elements.TextMapElement;
import org.eclipse.swt.custom.ExtendedModifyEvent; import nu.xom.Text; +import org.brailleblaster.perspectives.braille.document.BBSemanticsTable; +import org.brailleblaster.utd.IStyle; +import org.brailleblaster.utd.Style; //Passes data between different views and the parent DocumentManager class @@ -208,7 +210,7 @@* @param isBoxline: signifies whether selection is adding or removing a boxline, since boxline are handled differently than other styles
* @return */- public static Message createUpdateStyleMessage(Styles style, boolean multiSelect, boolean isBoxline){ + public static Message createUpdateStyleMessage(IStyle style, boolean multiSelect, boolean isBoxline){
Message m = new Message(BBEvent.UPDATE_STYLE); m.put("Style", style); m.put("multiSelect", multiSelect); =======================================--- /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Mon Feb 16 18:10:33 2015 UTC +++ /src/main/org/brailleblaster/perspectives/braille/stylers/StyleHandler.java Wed Mar 4 18:12:09 2015 UTC
@@ -6,13 +6,10 @@ import nu.xom.Attribute; import nu.xom.Element; - import org.brailleblaster.document.ConfigFileHandler; + import org.brailleblaster.perspectives.braille.Manager; -import org.brailleblaster.perspectives.braille.document.BBSemanticsTable; import org.brailleblaster.perspectives.braille.document.BrailleDocument;-import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.Styles; -import org.brailleblaster.perspectives.braille.document.BBSemanticsTable.StylesType;
import org.brailleblaster.perspectives.braille.eventQueue.Event; import org.brailleblaster.perspectives.braille.eventQueue.EventFrame; import org.brailleblaster.perspectives.braille.eventQueue.EventTypes; @@ -26,21 +23,23 @@ import org.brailleblaster.perspectives.braille.messages.Message; import org.brailleblaster.perspectives.braille.messages.Sender;import org.brailleblaster.perspectives.braille.viewInitializer.ViewInitializer;
+import org.brailleblaster.utd.IStyle; +import org.brailleblaster.utd.Style; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyleRange; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class StyleHandler extends Handler{ - - BrailleDocument document; - BBSemanticsTable semanticsTable;+ private static final Logger log = LoggerFactory.getLogger(StyleHandler.class);
+ private final BrailleDocument document; String configFile; EventFrame frame; - + public StyleHandler(Manager manager, ViewInitializer vi, MapList list){ super(manager, vi, list); this.document = manager.getDocument(); - this.semanticsTable = manager.getStyleTable(); this.configFile = manager.getCurrentConfig(); } @@ -77,22 +76,17 @@ Element e = (Element)event.getNode(); String semantic = e.getAttributeValue(SEMANTICS).split(",")[1]; - Styles style = manager.getStyleTable().get(semantic); + log.debug("Updating style " + semantic);+ IStyle style = document.getEngine().getStyleDefinitions().getStyleByName(semantic); Message message = Message.createUpdateStyleMessage(style, false, false);
handleStyleSingleSelected(message); tree.rebuildTree(event.getTreeIndex()); } else { StyleEvent ev = (StyleEvent)f.pop(); - try { - Styles oldStyle = semanticsTable.get(ev.getStyle().getName()).clone();- ConfigFileHandler handler = new ConfigFileHandler(configFile, manager.getWorkingPath());
- handler.updateDocumentStyle(ev.getStyle());- semanticsTable.resetStyleTable(configFile, manager.getWorkingPath());
- addEditEvent(list.get(ev.getListIndex()), oldStyle); - } catch (CloneNotSupportedException e) { - e.printStackTrace(); - } + log.debug("Copying style??? " + ev.getStyle().getName());+ Style newStyle = document.getEngine().getStyleDefinitions().addStyleCopy(ev.getStyle() + "_new", ev.getStyle());
+ addEditEvent(list.get(ev.getListIndex()), newStyle); } } manager.dispatch(Message.createUpdateCursorsMessage(Sender.TREE)); @@ -129,7 +123,7 @@ while (itr.hasNext()) { TextMapElement tempElement= itr.next();if( (!((tempElement instanceof BrlOnlyMapElement) || (tempElement instanceof PageMapElement)))){ - Message styleMessage = Message.createUpdateStyleMessage((Styles)message.getValue("Style"), (Boolean)message.getValue("multiSelect"), (Boolean)message.getValue("isBoxline")); + Message styleMessage = Message.createUpdateStyleMessage((Style)message.getValue("Style"), (Boolean)message.getValue("multiSelect"), (Boolean)message.getValue("isBoxline"));
Element parent = parentStyle(tempElement, styleMessage); parents.add(parent);ArrayList<TextMapElement> itemList = list.findTextMapElements(list.getNodeIndex(tempElement), parent, true);
@@ -150,8 +144,7 @@ else parent = document.getParent(current.n, true); - BBSemanticsTable styles = manager.getStyleTable();- message.put("previousStyle", styles.get(styles.getKeyFromAttribute(parent))); + message.put("previousStyle", document.getEngine().getStyleDefinitions().getStyleByName(parent.getAttributeValue("style")));
return parent; } @@ -299,14 +292,16 @@ } private void apply(String item){ - Styles style = semanticsTable.get(item); + //Styles style = semanticsTable.get(item);+ IStyle style = document.getEngine().getStyleDefinitions().getStyleByName(item);
- if(style != null){ + //if(style != null){ + //Umm: Keith was talking about removing box stuff from style boolean isBoxLine = style.getName().equals("boxline");Message m = Message.createUpdateStyleMessage(style, text.isMultiSelected(), isBoxLine);
m.put("Style", style); updateStyle(m); - } + //} } private void addModelEvent(ModelEvent e){ @@ -318,11 +313,11 @@ else frame.addEvent(e); } - private void addStyleEditEvent(TextMapElement t, Styles style){ + private void addStyleEditEvent(TextMapElement t, Style style){manager.peekUndoEvent().addEvent(new StyleEvent(list.indexOf(t), vi.getStartIndex(), t.start, t.brailleList.getFirst().start, style, configFile));
} - private void addEditEvent(TextMapElement t, Styles style){ + private void addEditEvent(TextMapElement t, Style style){frame.addEvent(new StyleEvent(list.indexOf(t), vi.getStartIndex(), t.start, t.brailleList.getFirst().start, style, configFile));
} }