content: /**
   * Copyright (C) 2010 EdgyTech LLC.
   *
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not
   * use this file except in compliance with the License. You may obtain a copy of
   * the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
   * License for the specific language governing permissions and limitations under
   * the License.
   */
  package com.edgytech.umongo;
  
  import com.edgytech.swingfast.ButtonBase;
  import com.edgytech.swingfast.EnumListener;
  import com.edgytech.swingfast.FormDialog;
  import com.edgytech.swingfast.XmlComponentUnit;
  import com.google.gson.Gson;
  import com.google.gson.GsonBuilder;
  import com.google.gson.JsonElement;
  import com.google.gson.JsonParser;
  
  /**
   *
   * @author antoine
   */
  public class JSONTextDialog extends FormDialog implements EnumListener<JSONTextDialog.Item> {
  
      enum Item {
          expandTextArea,
          convertFromJS,
          indent,
          help
      }
  
      public JSONTextDialog() {
          setEnumBinding(Item.values(), this);
      }
      
      public void setText(String text) {
          setStringFieldValue(Item.expandTextArea, text);
      }
      
      public String getText() {
          return getStringFieldValue(Item.expandTextArea);
      }
  
      public void convertFromJS(ButtonBase button) {
          String txt = getComponentStringFieldValue(Item.expandTextArea);
          txt = txt.replaceAll("ISODate\\(([^\\)]*)\\)", "{ \"\\$date\": $1 }");
          txt = txt.replaceAll("ObjectId\\(([^\\)]*)\\)", "{ \"\\$oid\": $1 }");
          txt = txt.replaceAll("NumberLong\\(([^\\)]*)\\)", "$1");
  //        txt = txt.replaceAll("ISODate", "\\$date");
          setComponentStringFieldValue(Item.expandTextArea, txt);
      }
      
      public void indent(ButtonBase button) {
          String txt = getComponentStringFieldValue(Item.expandTextArea);
          JsonElement je = MongoUtils.getJsonParser().parse(txt);
          String prettyJsonString = MongoUtils.getGson().toJson(je);
          setComponentStringFieldValue(Item.expandTextArea, prettyJsonString);        
      }
  
      @Override
      public void actionPerformed(Item enm, XmlComponentUnit unit, Object src) {
      }
  
  }
  