Revision: ee81d8aff279 Branch: rt2091-tPagesGui Author: Corey Knapp <cknapp.code@xxxxxxxxx> Date: Fri Feb 13 15:16:10 2015 UTC Log: Adding classes https://code.google.com/p/brailleblaster/source/detail?r=ee81d8aff279 Added: /src/main/org/brailleblaster/tpages/TPagesDialog.java /src/main/org/brailleblaster/tpages/TPagesGenerator.java ======================================= --- /dev/null+++ /src/main/org/brailleblaster/tpages/TPagesDialog.java Fri Feb 13 15:16:10 2015 UTC
@@ -0,0 +1,315 @@ +package org.brailleblaster.tpages; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.brailleblaster.perspectives.braille.Manager; +import org.brailleblaster.tpages.TPagesGenerator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.layout.RowLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Dialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.TabFolder; +import org.eclipse.swt.widgets.TabItem; +import org.eclipse.swt.widgets.Text; + +public class TPagesDialog extends Dialog{ + private Manager m; + private Shell shlTPages; + private Object result; + private Display display; + final int TEXT_BOX_WIDTH = 500; + final int LABEL_WIDTH = 150; + TPagesGenerator tpGenerator; + HashMap<String, String> xmlmap; ++ public TPagesDialog(Shell parent, int style, Manager brailleViewController){
+ super(parent, style); + setText("Transcriber-Generated Pages"); + m = brailleViewController; + } + + public Object open(){ + tpGenerator = new TPagesGenerator(); + if(!tpGenerator.checkForFile("filename")){ + tpGenerator.createNewTPageXML(); + } + tpGenerator.openTPageXML("filename"); + xmlmap = tpGenerator.getXmlMap(); + createContents(); + + shlTPages.open(); + shlTPages.layout(); + + display = getParent().getDisplay(); + while(!shlTPages.isDisposed()){ + if (!display.readAndDispatch()) display.sleep(); + } + + return result; + } + + public void createContents(){ + shlTPages = new Shell(getParent(), SWT.DIALOG_TRIM); + shlTPages.setText("Transcriber-Generated Pages"); + shlTPages.setVisible(true); + shlTPages.setLayout(new GridLayout(5,true)); + + GridData tfData = newTpData(5); + TabFolder folder = new TabFolder(shlTPages, SWT.NONE); + folder.setLayoutData(tfData); + + TabItem titleTab = new TabItem(folder, SWT.NONE); + titleTab.setText("Title Page(s)"); + + TabItem symbolsTab = new TabItem(folder, SWT.NONE); + symbolsTab.setText("Special Symbols"); + + ///////////////////////////// + ///////Title Page Tab//////// + ///////////////////////////// + Composite titleComposite = new Composite(folder, SWT.NONE); + GridLayout titlePageLayout = new GridLayout(2,false); + titleComposite.setLayout(new RowLayout(SWT.VERTICAL)); + + Group titleGroup = new Group(titleComposite, SWT.NONE); + titleGroup.setText("Title"); + titleGroup.setLayout(titlePageLayout); + + createLabel(titleGroup, "Title", 1); + final Text titleText = createText(titleGroup, 1, "title"); + + createLabel(titleGroup, "Grade Level", 1); + final Text gradeLevelText = createText(titleGroup, 1, "gradelevel"); + + createLabel(titleGroup, "Subtitle", 1); + final Text subtitleText = createText(titleGroup, 1, "subtitle"); + + createLabel(titleGroup, "Series Name", 1); + final Text seriesText = createText(titleGroup, 1, "seriesname"); + + createLabel(titleGroup, "Edition Name or Number", 1); + final Text editionText = createText(titleGroup, 1, "editionname"); + + Group authorGroup = new Group(titleComposite, SWT.NONE); + authorGroup.setText("Author"); + authorGroup.setLayout(new GridLayout(2,false)); + + createLabel(authorGroup, "Author(s)", 1);+ final Text authorText = new Text(authorGroup, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
+ GridData newData = newTpData(1); + newData.widthHint = TEXT_BOX_WIDTH; + newData.heightHint = 70; + if(xmlmap.get("authors")!=null) + authorText.setText(xmlmap.get("authors").replaceAll(";", "\r\n")); + authorText.setLayoutData(newData); + + createLabel(authorGroup, "Translator", 1); + final Text translatorText = createText(authorGroup, 1, "translator"); + + Group publisherGroup = new Group(titleComposite, SWT.NONE); + publisherGroup.setText("Publisher"); + publisherGroup.setLayout(new GridLayout(2,false)); + + createLabel(publisherGroup, "Permission", 1); + final Combo permissionCombo = new Combo(publisherGroup, SWT.READ_ONLY); + permissionCombo.setLayoutData(newTpData(1));+ permissionCombo.setItems(new String[]{"Published by", "With permission of the publisher,"}); + if (xmlmap.get("pubpermission").equals("0")|| xmlmap.get("pubpermission").equals("1"))
+ permissionCombo.select(Integer.parseInt(xmlmap.get("pubpermission"))); + else + permissionCombo.select(0); + + createLabel(publisherGroup, "Publisher", 1); + final Text publisherText = createText(publisherGroup, 1, "publisher"); + + createLabel(publisherGroup, "City and State", 1); + final Text pubLocationText = createText(publisherGroup, 1, "location"); + + createLabel(publisherGroup, "Website", 1); + final Text pubWebsiteText = createText(publisherGroup, 1, "website"); + + Group printGroup = new Group (titleComposite, SWT.NONE); + printGroup.setText("Printing Info"); + printGroup.setLayout(new GridLayout(2,false)); + + final Button copyrightButton = new Button(printGroup, SWT.CHECK); + copyrightButton.setText("Copyright");+ copyrightButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 1, 1));
+ if(xmlmap.get("copyrighted")!=null){ + copyrightButton.setSelection(xmlmap.get("copyrighted").equals("true")); + } else{ + copyrightButton.setSelection(true); + } + final Button copySymbolButton = new Button(printGroup, SWT.CHECK); + copySymbolButton.setText("Copyright Symbol");+ copySymbolButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 1, 1));
+ if(xmlmap.get("copyrightsymbol")!=null){+ copySymbolButton.setSelection(xmlmap.get("copyrightsymbol").equals("true"));
+ } else{ + copySymbolButton.setSelection(true); + } + + createLabel(printGroup, "Copyright Date", 1); + final Text copyDateText = createText(printGroup, 1, "copyrightdate"); + + createLabel(printGroup, "Copyright Text", 1); + final Text copyText = createText(printGroup, 1, "copyrighttext"); + + createLabel(printGroup, "Reproduction Notice", 1); + final Text reproText = createText(printGroup, 1, "repronotice");+ //reproText.setText("Further reproduction or distribution in other than a specialized format is prohibited.");
+ + createLabel(printGroup,"ISBN-13", 1); + final Text isbn13Text = createText(printGroup, 1, "isbn13"); + + createLabel(printGroup, "ISBN-10", 1); + final Text isbn10Text = createText(printGroup, 1, "isbn10"); + + createLabel(printGroup, "Printing History", 1); + final Text printHistoryText = createText(printGroup, 1, "printhistory"); + + Group transcriberGroup = new Group (titleComposite, SWT.NONE); + transcriberGroup.setText("Transcriber"); + transcriberGroup.setLayout(new GridLayout(2, false)); + + createLabel(transcriberGroup, "Transcription Year", 1); + final Text transYearText = createText(transcriberGroup, 1, "year"); + + createLabel(transcriberGroup, "Transcriber", 1); + final Text transText = createText(transcriberGroup, 1, "transcriber"); + + createLabel(transcriberGroup, "Tactile Graphics Specialist", 1); + final Text tgsText = createText(transcriberGroup, 1, "tgs"); + + createLabel(transcriberGroup, "Affiliation", 1);+ final Text affiliationText = createText(transcriberGroup, 1, "affiliation");
+ + Group volumesGroup = new Group (titleComposite, SWT.NONE); + volumesGroup.setText("Volumes"); + volumesGroup.setLayout(new GridLayout(2,false)); + createLabel(volumesGroup, "Not yet implemented", 1); + + titleTab.setControl(titleComposite); + ///////////////////////////// + + ///////////////////////////// + /////Special Symbols Tab///// + ///////////////////////////// + Composite symbolsComposite = new Composite(folder, SWT.NONE); + symbolsComposite.setLayout(new RowLayout(SWT.VERTICAL)); + + Group symbolsGroup = new Group(symbolsComposite, SWT.NONE); + symbolsGroup.setLayout(new GridLayout(1, false)); + + createLabel(symbolsGroup, "lolidk", 1); + + symbolsTab.setControl(symbolsComposite); + ///////////////////////////// + + Button closeButton = new Button(shlTPages, SWT.PUSH);+ GridData buttonData = new GridData(SWT.RIGHT, SWT.BEGINNING, false, false, 4, 1);
+ buttonData.widthHint = 100; + buttonData.heightHint = 30; + closeButton.setText("Close"); + closeButton.setLayoutData(buttonData); + + closeButton.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + shlTPages.close(); + } + + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + + } + }); + + Button generateButton = new Button(shlTPages, SWT.PUSH); + buttonData = new GridData(SWT.LEFT, SWT.BEGINNING, false, false, 1, 1); + buttonData.widthHint = 100; + buttonData.heightHint = 30; + generateButton.setText("Generate"); + generateButton.setLayoutData(buttonData); + + generateButton.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + xmlmap.put("title", titleText.getText()); + xmlmap.put("gradelevel", gradeLevelText.getText()); + xmlmap.put("subtitle", subtitleText.getText()); + xmlmap.put("seriesname", seriesText.getText()); + xmlmap.put("editionname", editionText.getText()); + authorText.setText(authorText.getText().replaceAll("\r\n", ";")); + xmlmap.put("authors", authorText.getText()); + xmlmap.put("translator", translatorText.getText()); + xmlmap.put("pubpermission", "" + permissionCombo.getSelectionIndex()); + xmlmap.put("publisher", publisherText.getText()); + xmlmap.put("location", pubLocationText.getText()); + xmlmap.put("website", pubWebsiteText.getText());+ xmlmap.put("copyrighted", String.valueOf(copyrightButton.getSelection())); + xmlmap.put("copyrightsymbol", String.valueOf(copySymbolButton.getSelection()));
+ xmlmap.put("copyrightdate", copyDateText.getText()); + xmlmap.put("copyrighttext", copyText.getText()); + xmlmap.put("repronotice", reproText.getText()); + xmlmap.put("isbn13", isbn13Text.getText()); + xmlmap.put("isbn10", isbn10Text.getText()); + xmlmap.put("printhistory", printHistoryText.getText()); + xmlmap.put("year", transYearText.getText()); + xmlmap.put("transcriber", transText.getText()); + xmlmap.put("tgs", tgsText.getText()); + xmlmap.put("affiliation", affiliationText.getText()); + tpGenerator.saveNewTPage("filename", xmlmap); + } + + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + + } + }); + + shlTPages.pack(true); + + } + + public GridData newTpData(int columns){+ return new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, columns, 1);
+ } + + public Label createLabel(Composite comp, String text, int horizSpan){ + Label newLabel = new Label(comp, SWT.NONE); + newLabel.setText(text); + GridData labelData = newTpData(horizSpan); + labelData.widthHint = LABEL_WIDTH; + newLabel.setLayoutData(labelData); + return newLabel; + } + + public Text createText(Composite comp, int horizSpan, String xmlmapKey){ + Text newText = new Text(comp, SWT.SINGLE | SWT.BORDER); + GridData newData = newTpData(horizSpan); + newData.widthHint = TEXT_BOX_WIDTH; + newText.setLayoutData(newData); + if(xmlmapKey!=null){ + if(xmlmap.get(xmlmapKey)!=null){ + newText.setText(xmlmap.get(xmlmapKey)); + } + } + return newText; + } +} ======================================= --- /dev/null+++ /src/main/org/brailleblaster/tpages/TPagesGenerator.java Fri Feb 13 15:16:10 2015 UTC
@@ -0,0 +1,197 @@ +package org.brailleblaster.tpages; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.brailleblaster.BBIni; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.w3c.dom.Node; +import org.xml.sax.SAXException; +/* + * Handles reading from and writing to XML + */ +public class TPagesGenerator { + String programDataPath;+ String[] xmlElements = {"title", "gradelevel", "subtitle", "seriesname", "editionname", "authors", "translator", + "pubpermission", "publisher", "location", "website", "copyrighted", "copyrightsymbol", "copyrightdate", + "copyrighttext", "repronotice", "isbn13", "isbn10", "printhistory", "year", "transcriber", "tgs", "affiliation"};
+ private HashMap<String, String> xmlmap; + + public TPagesGenerator(){ + programDataPath = BBIni.getProgramDataPath(); + xmlmap = new HashMap<String, String>(); + } + + /* + * Reload previously made T-Page + */ + public boolean openTPageXML(String filename){ + try{ + File file = new File("C:\\Users\\cknapp\\Desktop\\testingjavaxml.xml"); ++ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document doc = docBuilder.parse(file); + doc.getDocumentElement().normalize(); + + //NodeList nodes = doc.getChildNodes(); + //System.out.println("nodelist = " + nodes.getLength() + " nodes"); + for (int i = 0; i < xmlElements.length; i++){+ xmlmap.put(xmlElements[i], doc.getElementsByTagName(xmlElements[i]).item(0).getTextContent());
+ } + + + } catch(ParserConfigurationException e){ + e.printStackTrace(); + return false; + } catch(IOException e){ + e.printStackTrace(); + return false; + }catch (SAXException e){ + e.printStackTrace(); + return false; + } + + return true; + } + + public boolean checkForFile(String filename){ + File file = new File("C:\\Users\\cknapp\\Desktop\\testingjavaxml.xml"); + if(file.exists()){ + return true; + } else { + return false; + } + } + + /*+ * User is using T-Pages for the first time. This will at some point require a String argument for the filename
+ */ + public boolean createNewTPageXML(){ + try{+ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); + Document doc = docBuilder.newDocument(); + + Element rootElement = doc.createElement("tpage"); + doc.appendChild(rootElement); + + Element titleInfo = doc.createElement("titleinfo"); + rootElement.appendChild(titleInfo); + + titleInfo.appendChild(doc.createElement("title")); + titleInfo.appendChild(doc.createElement("gradelevel")); + titleInfo.appendChild(doc.createElement("subtitle")); + titleInfo.appendChild(doc.createElement("seriesname")); + titleInfo.appendChild(doc.createElement("editionname")); + + Element authorInfo = doc.createElement("authorinfo"); + rootElement.appendChild(authorInfo); + + authorInfo.appendChild(doc.createElement("authors")); + authorInfo.appendChild(doc.createElement("translator")); + + Element publisherInfo = doc.createElement("publisherinfo"); + rootElement.appendChild(publisherInfo); + + publisherInfo.appendChild(doc.createElement("pubpermission")); + publisherInfo.appendChild(doc.createElement("publisher")); + publisherInfo.appendChild(doc.createElement("location")); + publisherInfo.appendChild(doc.createElement("website")); + + Element printInfo = doc.createElement("printinfo"); + rootElement.appendChild(printInfo); + + printInfo.appendChild(doc.createElement("copyrighted")); + printInfo.appendChild(doc.createElement("copyrightsymbol")); + printInfo.appendChild(doc.createElement("copyrightdate")); + printInfo.appendChild(doc.createElement("copyrighttext")); + printInfo.appendChild(doc.createElement("repronotice")); + printInfo.appendChild(doc.createElement("isbn13")); + printInfo.appendChild(doc.createElement("isbn10")); + printInfo.appendChild(doc.createElement("printhistory")); + + Element transcriptionInfo = doc.createElement("transcriptioninfo"); + rootElement.appendChild(transcriptionInfo); + + transcriptionInfo.appendChild(doc.createElement("year")); + transcriptionInfo.appendChild(doc.createElement("transcriber")); + transcriptionInfo.appendChild(doc.createElement("tgs")); + transcriptionInfo.appendChild(doc.createElement("affiliation")); + + TransformerFactory tFactory = TransformerFactory.newInstance(); + Transformer transformer = tFactory.newTransformer(); + DOMSource source = new DOMSource(doc); + //StreamResult result = new StreamResult(System.out);+ StreamResult result = new StreamResult(new File("C:\\Users\\cknapp\\Desktop\\testingjavaxml.xml"));
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount";, "2");
+ transformer.transform(source, result); + + } catch(ParserConfigurationException e){ + e.printStackTrace(); + return false; + } catch(TransformerException e){ + e.printStackTrace(); + return false; + } + return true; + } ++ public boolean saveNewTPage(String filename, HashMap<String, String> newXmlMap){
+ File file = new File("C:\\Users\\cknapp\\Desktop\\testingjavaxml.xml"); + Set mapSet = newXmlMap.entrySet(); + Iterator iterator = mapSet.iterator(); + try{+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document doc = docBuilder.parse(file); + + while(iterator.hasNext()){ + Map.Entry mapEntry = (Map.Entry)iterator.next();+ doc.getElementsByTagName((String)mapEntry.getKey()).item(0).setTextContent((String)mapEntry.getValue());
+ } ++ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(doc);+ StreamResult result = new StreamResult(new File("C:\\Users\\cknapp\\Desktop\\testingjavaxml.xml"));
+ transformer.transform(source, result); + + } catch(ParserConfigurationException e){ + e.printStackTrace(); + return false; + } catch(IOException e){ + e.printStackTrace(); + return false; + }catch (SAXException e){ + e.printStackTrace(); + return false; + }catch(TransformerException e){ + e.printStackTrace(); + return false; + } + + + return true; + } + + public HashMap<String, String> getXmlMap(){ + return xmlmap; + } +}