Package org.zkoss.zss.app.zul

Source Code of org.zkoss.zss.app.zul.Sheets

/* Sheets.java

{{IS_NOTE
  Purpose:

  Description:

  History:
    Apr 12, 2010 3:47:56 PM , Created by Sam
}}IS_NOTE

Copyright (C) 2009 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
}}IS_RIGHT
*/
package org.zkoss.zss.app.zul;

import java.util.Iterator;
import java.util.List;

import org.zkoss.zk.ui.Components;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.IdSpace;
import org.zkoss.zk.ui.UiException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.MouseEvent;
import org.zkoss.zss.app.Consts;
import org.zkoss.zss.app.zul.ctrl.DesktopWorkbenchContext;
import org.zkoss.zss.model.Range;
import org.zkoss.zss.model.Ranges;
import org.zkoss.zul.Div;
import org.zkoss.zul.Menuitem;
import org.zkoss.zul.Menupopup;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Tabbox;
import org.zkoss.zul.Tabs;

/**
* Sheets is responsible for switch sheets
* @author sam
*
*/
public class Sheets extends Div implements IdSpace {

  private Tabbox tabbox;
  private Tabs tabs;
 
  private Menupopup sheetContextMenu;
  private Menuitem shiftSheetLeft;
  private Menuitem shiftSheetRight;
  private Menuitem deleteSheet;
  private Menuitem renameSheet;
  private Menuitem copySheet;
  private Menuitem protectSheet;
 
  public Sheets() {
    Executions.createComponents(Consts._SheetPanel_zul, this, null);
    Components.wireVariables(this, this, '$', true, true);
    Components.addForwards(this, this, '$');
  }
 
  public void onCreate() {
    final DesktopWorkbenchContext workbenchContext= getDesktopWorkbenchContext();
    workbenchContext.addEventListener(Consts.ON_SHEET_CHANGED, new EventListener() {
     
      @Override
      public void onEvent(Event event) throws Exception {
        protectSheet.setChecked(workbenchContext.getWorkbookCtrl().isSheetProtect());
      }
    });   
  }
 
  public void onSelect$tabbox() {
    getDesktopWorkbenchContext().getWorkbookCtrl().setSelectedSheet(tabbox.getSelectedTab().getLabel());
    getDesktopWorkbenchContext().fireSheetChanged();
  }
 
  /**
   * Sets the current sheet name of the tabbox
   * @param index
   */
  public void setCurrentSheet(int index) {
    tabbox.setSelectedIndex(index);
    getDesktopWorkbenchContext().getWorkbookCtrl().setSelectedSheet(tabbox.getSelectedTab().getLabel());
  }
 
  public void setCurrentSheetByName(String name) {
    int j = 0;
    for (final Iterator it = tabs.getChildren().iterator(); it.hasNext(); ++j) {
      final Tab tab = (Tab) it.next();
      if (name.equals(tab.getLabel())) {
        setCurrentSheet(j);
        break;
      }
    }
  }
 
  /**
   * Returns the current sheet name of tabbox
   * @return
   */
  public String getCurrenSheet() {
    return tabbox.getSelectedTab().getLabel();
  }
 
  /**
   * Add a sheet name to tabbox
   * @param name
   */
  public void addSheet(String name) {
    Tab tab = new Tab(name);
    tab.setContext(sheetContextMenu);
    tab.setParent(tabs);
  }
 
  /**
   * Redraw sheet names of spreadsheet
   */
  public void redraw() {
     final int seldIndex = tabbox.getSelectedTab() != null ?
         tabbox.getSelectedTab().getIndex() : -1;
   
    tabs.getChildren().clear();

    List<String> names = getDesktopWorkbenchContext().getWorkbookCtrl().getSheetNames();
    for (String name : names) {
      final Tab tab = new Tab(name);
      tab.addEventListener(org.zkoss.zk.ui.event.Events.ON_RIGHT_CLICK, new EventListener() {
      public void onEvent(Event event) throws Exception {           
        if (tabbox.getSelectedTab().getLabel() != tab.getLabel())
          setSelectedTab(tab);
 
        protectSheet.setChecked(getDesktopWorkbenchContext().getWorkbookCtrl().isSheetProtect());
        MouseEvent evt = (MouseEvent)event;
        sheetContextMenu.open(evt.getPageX(), evt.getPageY());
      }});
      tab.setParent(tabs);
      if (seldIndex == tab.getIndex()) {
        setSelectedTabDirectly(tab);
      }
    }
  }

  private void setSelectedTab(Tab tab) {
    tabbox.setSelectedTab(tab);
    getDesktopWorkbenchContext().getWorkbookCtrl().setSelectedSheet(tab.getLabel());
    getDesktopWorkbenchContext().fireSheetChanged();
  }
 
  private void setSelectedTabDirectly(Tab tab) {
    tabbox.setSelectedTab(tab);
  }
 
  /**
   * Clear all tabs
   */
  public void clear() {
    tabs.getChildren().clear();
  }
 
  public void onClick$shiftSheetLeft() {
    int newIdx = getDesktopWorkbenchContext().getWorkbookCtrl().shiftSheetLeft();
    if (newIdx >= 0) {
      tabbox.setSelectedIndex(newIdx);
      redraw();
      setCurrentSheet(newIdx);
    } else {
      //TODO: show error message
    }
  }
 
  public void onClick$shiftSheetRight() {
    int newIdx = getDesktopWorkbenchContext().getWorkbookCtrl().shiftSheetRight();
    if (newIdx >= 0) {
      tabbox.setSelectedIndex(newIdx);
      redraw();
      setCurrentSheet(newIdx);
    } else {
      //TODO: show error message
    }
  }
 
  public void onClick$deleteSheet() {
    Range rng = Ranges.range(getDesktopWorkbenchContext().getWorkbookCtrl().getSelectedSheet());
    rng.deleteSheet();
   
/*    int newIdx = getDesktopWorkbenchContext().getWorkbookCtrl().deleteSheet();
    if (newIdx >= 0) {
      tabbox.setSelectedIndex(newIdx);
      redraw();
      setCurrentSheet(newIdx);
    } else {
      try {
        Messagebox.show("A workbook must contain at least one visible worksheet");
      } catch (InterruptedException e) {
      }
    }
*/  }
 
  public void onClick$renameSheet() {
    getDesktopWorkbenchContext().getWorkbenchCtrl().openRenameSheetDialog(getCurrenSheet());
  }
 
  public void onClick$copySheet() {
    throw new UiException("cop sheet not implement yet");
  }
 
  public void onCheck$protectSheet() {
    getDesktopWorkbenchContext().getWorkbookCtrl().protectSheet(
      protectSheet.isChecked() ? "" : null);
  }
 
  protected DesktopWorkbenchContext getDesktopWorkbenchContext() {
    return Zssapp.getDesktopWorkbenchContext(this);
  }
}
TOP

Related Classes of org.zkoss.zss.app.zul.Sheets

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.