Changeset 25610

Show
Ignore:
Timestamp:
16.05.2012 13:40:43 (7 years ago)
Author:
sjm84
Message:

First phase of making GLI format editor properly indented

Location:
main/trunk/gli/src/org/greenstone/gatherer
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/gli/src/org/greenstone/gatherer/cdm/Format4gs3Manager.java

    r25576 r25610  
    3131import javax.swing.event.*; 
    3232import javax.swing.undo.*; 
     33import javax.xml.parsers.DocumentBuilderFactory; 
     34 
    3335import org.greenstone.gatherer.Configuration; 
    3436import org.greenstone.gatherer.DebugStream; 
     
    4446import org.greenstone.gatherer.util.XMLTools; 
    4547import org.w3c.dom.*; 
     48import org.xml.sax.InputSource; 
    4649 
    4750import java.awt.FontMetrics; 
     
    4952import java.awt.Insets; 
    5053import java.awt.Rectangle; 
     54import java.io.ByteArrayInputStream; 
    5155 
    5256/** 
     
    234238        //Collections.sort (feature_model); 
    235239        return feature_model; 
     240    } 
     241 
     242    private String addSurroundingTags(String xml) 
     243    { 
     244        return "<ROOTELEMENT>" + xml + "</ROOTELEMENT>"; 
     245    } 
     246 
     247    private String removeSurrondingTags(String xml) 
     248    { 
     249        return xml.replace("<ROOTELEMENT>\n", "").replace("<ROOTELEMENT>", "").replace("</ROOTELEMENT>", ""); 
    236250    } 
    237251 
     
    377391            splitPane.add(center_pane, JSplitPane.BOTTOM); 
    378392            splitPane.setDividerLocation(150); 
    379              
     393 
    380394            setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); 
    381395            setLayout(new BorderLayout()); 
     
    503517                    if (msg.startsWith(XMLTools.WELLFORMED)) 
    504518                    { 
    505                         format.setPureFormat(Format4gs3.toOneLineFormat(format_str)); 
     519                        format.setPureFormat(format_str); 
    506520                        format.update(); 
    507521                        format_list_model.refresh(format); 
     
    549563                    ///ystem.err.println("There is an existing format!"); 
    550564                    format_list.setSelectedValue(format, true); 
    551                     editor_textarea.setText(format.getPureFormat()); 
     565                    Element formatElem = null; 
     566                    try 
     567                    { 
     568                        InputSource is = new InputSource(new ByteArrayInputStream(addSurroundingTags(format.getPureFormat()).getBytes("utf-8"))); 
     569                        formatElem = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is).getDocumentElement(); 
     570                    } 
     571                    catch (Exception ex) 
     572                    { 
     573                        ex.printStackTrace(); 
     574                    } 
     575 
     576                    if (formatElem != null) 
     577                    { 
     578                        StringBuffer sb = new StringBuffer(); 
     579                        XMLTools.xmlNodeToString(sb, formatElem, true, "  ", 0); 
     580                        editor_textarea.setText(removeSurrondingTags(sb.toString())); 
     581                    } 
     582                    else 
     583                    { 
     584                        editor_textarea.setText(format.getPureFormat()); 
     585                    } 
    552586                    editor_textarea.setCaretPosition(0); 
    553587 
     
    614648                        existingFormat(format.getFeatureName().startsWith(Classifier.CLASSIFIER_PREFIX)); 
    615649 
    616                         editor_textarea.setText(format.getPureFormat()); 
     650                        Element formatElem = null; 
     651                        try 
     652                        { 
     653                            InputSource is = new InputSource(new ByteArrayInputStream(addSurroundingTags(format.getPureFormat()).getBytes("utf-8"))); 
     654                            formatElem = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is).getDocumentElement(); 
     655                        } 
     656                        catch (Exception ex) 
     657                        { 
     658                            ex.printStackTrace(); 
     659                        } 
     660 
     661                        if (formatElem != null) 
     662                        { 
     663                            StringBuffer sb = new StringBuffer(); 
     664                            XMLTools.xmlNodeToString(sb, formatElem, true, "  ", 0); 
     665                            editor_textarea.setText(removeSurrondingTags(sb.toString())); 
     666                        } 
     667                        else 
     668                        { 
     669                            editor_textarea.setText(format.getPureFormat()); 
     670                        } 
    617671                        editor_textarea.setCaretPosition(0); 
    618672 
  • main/trunk/gli/src/org/greenstone/gatherer/util/XMLTools.java

    r25206 r25610  
    944944    { 
    945945        StringBuffer sb = new StringBuffer(""); 
    946         xmlNodeToString(sb, e, true, 2); 
     946        xmlNodeToString(sb, e, true, "\t", 2); 
    947947        return sb.toString(); 
    948948    } 
    949949 
    950     private static void xmlNodeToString(StringBuffer sb, Node e, boolean indent, int depth) 
     950    public static void xmlNodeToString(StringBuffer sb, Node e, boolean indent, String indentString, int depth) 
    951951    { 
    952952        if (e.getNodeType() == Node.TEXT_NODE) 
     
    974974            for (int i = 0; i < depth; i++) 
    975975            { 
    976                 sb.append('\t'); 
     976                sb.append(indentString); 
    977977            } 
    978978        } 
     
    10331033            for (int i = 0; i < len; i++) 
    10341034            { 
    1035                 xmlNodeToString(sb, children.item(i), indent, depth + 1); 
     1035                xmlNodeToString(sb, children.item(i), indent, indentString, depth + 1); 
    10361036            } 
    10371037 
     
    10401040                for (int i = 0; i < depth; i++) 
    10411041                { 
    1042                     sb.append('\t'); 
     1042                    sb.append(indentString); 
    10431043                } 
    10441044            }