Package com.google.code.apis.rest.client.GUI

Source Code of com.google.code.apis.rest.client.GUI.RequestUriTree

package com.google.code.apis.rest.client.GUI;

import java.util.Iterator;
import java.util.Vector;

import com.google.code.apis.rest.client.Tree.MethodItem;
import com.google.code.apis.rest.client.Tree.ReferenceManager;
import com.google.code.apis.rest.client.Tree.WadlTreeRoot;
import com.google.code.apis.rest.client.Util.Tools;
import com.google.code.apis.rest.client.Wadl.Analyzer;
import com.google.code.apis.rest.client.Wadl.ApplicationNode;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.WindowResizeListener;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.Widget;

/**
* This class creates the request uri tree
*
*/
public class RequestUriTree extends Composite {
  public TextBox requestUriTextBox; 
  public ListBox httpMethodListBox;
  public Button startAnalyzeButton;
  public Button testRequestButton;
  private ParameterTree parameterTree;
  private HorizontalPanel requestSampleBoxPanel = new HorizontalPanel();  
  
  /**
   * Creates the request uri tree
   * @param requestString The request node
   */
  public RequestUriTree(String request) {   
    // split the request in http method and uri string
    request = request.trim();
    request = request.replaceAll("\\s\\s*", " ");   
    String httpMethod = request.substring(0, request.indexOf(" "));
    String uriString = request.substring(request.indexOf(" ") + 1);   
   
    // http method listbox
    httpMethodListBox = new ListBox();   
    addMethods(httpMethodListBox);   
    if (Tools.contains(MethodItem.methodNames, httpMethod)) {
      httpMethodListBox.setSelectedIndex(MethodItem.indexOfName(httpMethod));
    }
    else {
      httpMethodListBox.setSelectedIndex(0);
    }
    httpMethodListBox.addChangeListener(new ChangeListener() {
      public void onChange(Widget sender) {       
        if (httpMethodListBox.getItemText(httpMethodListBox.getSelectedIndex()).equals(MethodItem.get)) {
          testRequestButton.setEnabled(true);
        }
        else {
          testRequestButton.setEnabled(false);
        }               
        updateReferences();
      }     
    });
    requestSampleBoxPanel.add(httpMethodListBox);
   
    // request uri textbox
    requestUriTextBox = new TextBox();  
    requestUriTextBox.setWidth(Math.floor(0.62 * Window.getClientWidth()) + "px");
    requestUriTextBox.setText(uriString);
    requestUriTextBox.addChangeListener(new ChangeListener() {
      public void onChange(Widget sender) {
        updateReferences();
      }
    });
    requestUriTextBox.addKeyboardListener(new KeyboardListener() {     
      public void onKeyDown(Widget sender, char keyCode, int modifiers) {   
        // empty
      }

      public void onKeyPress(Widget sender, char keyCode, int modifiers) {
        // empty
      }
     
      public void onKeyUp(Widget sender, char keyCode, int modifiers) {
        updateReferences();
      }
    });               
    requestSampleBoxPanel.add(requestUriTextBox);   
   
    // remove request string hyperlink
    Hyperlink removeRequestStringHyperlink = new Hyperlink(GuiFactory.strings.remove(), true, "");
    removeRequestStringHyperlink.addClickListener(new ClickListener() {
      public void onClick(Widget sender) {       
        ReferenceManager.removeAllReferences(parameterTree.requestString);
        // if there are other requests left, just delete the current one
        if (ReferenceManager.allRequestStrings.size() > 0) {         
          parameterTree.requestTree.removeFromParent();         
        }
        // if not, create the default init request
        else {
          ReferenceManager.allRequestStrings.add(GuiFactory.strings.newRequestUri());  
          ParameterPanel.requestContainer.clear();
        }       
        listRequestSamples(ReferenceManager.allRequestStrings);       
      }
    });
    requestSampleBoxPanel.add(removeRequestStringHyperlink);
   
    // start analyze button
    startAnalyzeButton = new Button(GuiFactory.strings.analyze());
    startAnalyzeButton.addClickListener(new ClickListener() {
      public void onClick(Widget sender) {            
        Analyzer analyzer = new Analyzer(parameterTree.requestString);
        ApplicationNode application = analyzer.analyze();
           
        WadlTreeRoot wadlTreeRoot = new WadlTreeRoot();
        Tree wadlTree = wadlTreeRoot.buildTree(application);
       
        WadlPanel.wadlArea.setWidget(wadlTree);
        GuiFactory.toggleButtonsEnabled(true);
      }      
    });     
    requestSampleBoxPanel.add(startAnalyzeButton);   
    requestSampleBoxPanel.add(new HTML(" "));   
   
    // test request button
    testRequestButton = new Button(GuiFactory.strings.testRequest());
    testRequestButton.addClickListener(new ClickListener() {
      public void onClick(Widget sender) {
        TestRequestDialog.show(requestUriTextBox, RequestUriTree.this);
      }
    });   
    if (!httpMethodListBox.getItemText(httpMethodListBox.getSelectedIndex()).equals(MethodItem.get)) {
      testRequestButton.setEnabled(false);
    }
    requestSampleBoxPanel.add(testRequestButton);      
   
    // if no parameter tree exists for the new request
    // start listing the parameters in a new parameter tree   
    if (!ReferenceManager.alreadyExistingTrees.contains(request)) {          
      parameterTree = new ParameterTree(request);    
      Vector referencedObjects = new Vector();  
      referencedObjects.add(httpMethodListBox);
      referencedObjects.add(parameterTree);
      referencedObjects.add(requestUriTextBox);
      referencedObjects.add(startAnalyzeButton);   
      ReferenceManager.putAllReferences(request, referencedObjects);
     
      parameterTree.buildTree();     
    }  
    // else recycle the existing tree and
    // start listing the parameters in an already existing parameter tree
    else {     
      parameterTree = ReferenceManager.getParameterTree(request);       
      parameterTree.updateTree();     
   
   
    // handle window resize events and init widgets
    Window.addWindowResizeListener(new WindowResizeListener() {
      public void onWindowResized(int width, int height) {
        requestUriTextBox.setWidth(Math.floor(0.62 * width) + "px");       
      }
    });  
   
    requestSampleBoxPanel.setWidth("100%");
    initWidget(requestSampleBoxPanel);
  }
   
  /**
   * @param httpMethod
   */
  private void addMethods(ListBox httpMethod) {
    for (int i = 0; i < MethodItem.methodNames.length; i++) {
      httpMethod.addItem(MethodItem.methodNames[i]);
    }   
  }

  /**
   * Sets a new request uri string. Needed if the uri string is changed manually.
   * @param uriString The new uri string
   */
  public void setRequestUri(String uriString) {   
    requestUriTextBox.setText(uriString)
    updateReferences();
  }
    
  private void updateReferences() {
    String newRequestString =
        httpMethodListBox.getItemText(httpMethodListBox.getSelectedIndex()) +
        " " + requestUriTextBox.getText();
   
    // remove old references
    ReferenceManager.removeAllReferences(parameterTree.requestString);
    // add new references
    Vector referencedObjects = new Vector();  
    referencedObjects.add(httpMethodListBox);
    referencedObjects.add(parameterTree);
    referencedObjects.add(requestUriTextBox);
    referencedObjects.add(startAnalyzeButton);   
    ReferenceManager.putAllReferences(newRequestString, referencedObjects);
   
    parameterTree.requestString = newRequestString;
    parameterTree.updateTree();   
 

  /**
   * Lists all the request uris
   * @param allRequestSamples The vector that holds all the request uris
   */
  public static void listRequestSamples(Vector allRequestSamples) {
    RequestUriPanel.uriTree.removeItems();
    Vector requestSamples = (Vector) allRequestSamples.clone();   
    for(Iterator allRequestSamplesIterator = requestSamples.iterator(); allRequestSamplesIterator.hasNext(); /* empty */) {
      String requestString = (String) allRequestSamplesIterator.next();
      RequestUriPanel.uriTree.addItem(new RequestUriTree(requestString));
    }   
  }
}
TOP

Related Classes of com.google.code.apis.rest.client.GUI.RequestUriTree

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.