Package com.piki.client.ui

Source Code of com.piki.client.ui.WikiPageBox$WikiPageBoxHandler

/**
*
*/
package com.piki.client.ui;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;



public class WikiPageBox extends Composite {
 
  private boolean readOnly = false;
 
  public interface WikiPageBoxHandler extends EventHandler {
   
    void onWikiPage(String wikiPageName);
  }
 
  private List<WikiPageBoxHandler> newHandler = new ArrayList<WikiPageBoxHandler>();
 
  private List<WikiPageBoxHandler> selectHandler = new ArrayList<WikiPageBoxHandler>();
 
  private List<WikiPageBoxHandler> deleteHandler = new ArrayList<WikiPageBoxHandler>();
 
  Grid newPanel = null;
 
  Grid selectPanel = null;
 
  ListBox selectBox = null;
 
  Grid deletePanel = null;
 
  ListBox deleteBox = null;

 
  /**
   * default constructor
   */
  public WikiPageBox() {
   
    VerticalPanel panel = new VerticalPanel();
   
    // new wiki page
    newPanel = new Grid(2,2);
    newPanel.setWidget(0, 0, new HTML("Name:"));
    final TextBox name = new TextBox();
    newPanel.setWidget(0, 1, name);
    Button newButton = new Button("Erzeugen");
    newButton.addClickHandler(new ClickHandler() {
     
      @Override
      public void onClick(ClickEvent event) {
        String wikiPageName = name.getText();
        for (WikiPageBoxHandler handler: newHandler)
          handler.onWikiPage(wikiPageName);
        name.setText("");
      }
    });
    newPanel.setWidget(1, 1, newButton);
    panel.add(newPanel);
   
   
    // Auswaehlen
    selectPanel = new Grid(2,2);
    selectPanel.setWidget(0, 0, new HTML("Name"));
    selectBox = new ListBox();
    selectPanel.setWidget(0, 1, selectBox);
    Button selectButton = new Button("Auswählen");
    selectButton.addClickHandler(new ClickHandler() {
     
      @Override
      public void onClick(ClickEvent event) {
        String wikiPageName = selectBox.getItemText(selectBox.getSelectedIndex());
        for (WikiPageBoxHandler listener: selectHandler)
          listener.onWikiPage(wikiPageName);
      }
    });
    selectPanel.setWidget(1, 1, selectButton);
    selectPanel.setVisible(false);
    panel.add(selectPanel);
   
   
    // delete panel
    deletePanel = new Grid(2,2);
    deletePanel.setWidget(0, 0, new HTML("Name"));
    deleteBox = new ListBox();
    deletePanel.setWidget(0, 1, deleteBox);
    Button deleteButton = new Button("Löschen");
    deleteButton.addClickHandler(new ClickHandler() {
     
      @Override
      public void onClick(ClickEvent event) {
        String wikiPageName = deleteBox.getItemText(deleteBox.getSelectedIndex());
        for (WikiPageBoxHandler listener: deleteHandler)
          listener.onWikiPage(wikiPageName);
      }
    });
    deletePanel.setWidget(1, 1, deleteButton);
    deletePanel.setVisible(false);
    panel.add(deletePanel);
   
    initWidget(panel);
  }
 
  public boolean isReadOnly() {
    return readOnly;
  }
 
  public void setReadOnly(boolean readOnly) {
    this.readOnly = readOnly;
    visible();
  }
 
  public void addWikiPage(String wikiPageName) {
    selectBox.addItem(wikiPageName);
    deleteBox.addItem(wikiPageName);
    visible();
  }
 
  public void focusOnWikiPage(String wikiPageName) {
    if (wikiPageName != null) {
      int index = -1;
      for (int i = 0; i < selectBox.getItemCount(); i++) {
        if (wikiPageName.equals(selectBox.getItemText(i))) {
          index = i;
          break;
        }
      }
      if (index != -1)
        selectBox.setItemSelected(index, true);
    }
  }
 
  public void removeWikiPage(String wikiPageName) {
    if (wikiPageName != null) {
      Integer idSelctBox = null;
      Integer idDeleteBox = null;
      for (int i = 0; i < selectBox.getItemCount(); i++) {
        if (wikiPageName.equals(selectBox.getItemText(i))) {
          idSelctBox = i;
        }
        if (wikiPageName.equals(deleteBox.getItemText(i))) {
          idDeleteBox = i;
        }
      }
      if (idSelctBox != null) {
        selectBox.removeItem(idSelctBox);
      }
      if (idDeleteBox != null) {
        deleteBox.removeItem(idDeleteBox);
      }
      visible();
    }
  }
 
  public void addNewWikiPageHandler(WikiPageBoxHandler wikiPageBoxHandler) {
    newHandler.add(wikiPageBoxHandler);
  }
 
  public void addSelectWikiPageHandler(WikiPageBoxHandler handler) {
    selectHandler.add(handler);
  }
 
  public void addDeleteWikiPageHandler(WikiPageBoxHandler handler) {
    deleteHandler.add(handler);
  }
 
  protected void visible() {
    if (!readOnly && selectBox.getItemCount() > 0) {
      selectPanel.setVisible(true);
      deletePanel.setVisible(true);
    } else {
      selectPanel.setVisible(false);
      deletePanel.setVisible(false);     
    }
  }

}
TOP

Related Classes of com.piki.client.ui.WikiPageBox$WikiPageBoxHandler

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.