Changeset 25610 for main


Ignore:
Timestamp:
2012-05-16T13:40:43+12:00 (12 years ago)
Author:
sjm84
Message:

First phase of making GLI format editor properly indented

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

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            }
Note: See TracChangeset for help on using the changeset viewer.