Package org.zkoss.zss.app.zul

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

/* FileMenu.java

{{IS_NOTE
  Purpose:
   
  Description:
   
  History:
    Nov 23, 2010 5:43:38 PM , Created by Sam
}}IS_NOTE

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

*/
package org.zkoss.zss.app.zul;

import java.io.ByteArrayOutputStream;

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.WebApps;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zss.app.Consts;
import org.zkoss.zss.app.file.FileHelper;
import org.zkoss.zss.app.zul.ctrl.DesktopWorkbenchContext;
import org.zkoss.zss.app.zul.ctrl.WorkbookCtrl;
import org.zkoss.zss.app.zul.ctrl.WorkspaceContext;
import org.zkoss.zul.Filedownload;
import org.zkoss.zul.Menu;
import org.zkoss.zul.Menuitem;
import org.zkoss.zul.Menupopup;

/**
*
* @author sam
*
*/
public class FileMenu extends Menu implements IdSpace {
 
  private Menupopup fileMenupopup;
  private Menuitem newFile;
  private Menuitem openFile;

  private Menuitem saveFile;
  private Menuitem saveFileAndClose;
  //TODO: permission control
  private Menuitem deleteFile;
  private Menuitem importFile;
  private Menuitem exportPdf;
  private boolean _exportToPdfDisabled; /* default false */

  private Menuitem exportHtml;
  private boolean _exportToHtmlDisabled; /* default false */

  private Menuitem exportExcel;
  private boolean _exportToExcelDisabled;
 
  public FileMenu() {
    Executions.createComponents(Consts._FileMenu_zul, this, null);
    Components.wireVariables(this, this, '$', true, true);
    Components.addForwards(this, this, '$');

    importFile.setDisabled(!FileHelper.hasImportPermission());
   
    boolean saveDisabled = !FileHelper.hasSavePermission();
    saveFile.setDisabled(saveDisabled);
    saveFileAndClose.setDisabled(saveDisabled);
  }
 
  public void setSaveFileDisabled(boolean disabled) {
    saveFile.setDisabled(true);
  }
 
  public void setSaveFileAndCloseDisabled(boolean disabled) {
    saveFileAndClose.setDisabled(disabled);
  }
 
  public void setDeleteFileDisabled(boolean disabled) {
    deleteFile.setDisabled(disabled);
  }
 
  public void setExportPdfDisabled(boolean disabled) {
    _exportToPdfDisabled = disabled;
    exportPdf.setDisabled(disabled);
  }

  public void setExportHtmlDisabled(boolean disabled) {
    _exportToHtmlDisabled = disabled;
    exportHtml.setDisabled(disabled);
  }
 
  public void setExportExcelDisabled(boolean disabled) {
    _exportToExcelDisabled = disabled;
    exportExcel.setDisabled(disabled);
  }
 
  public void onClick$newFile() {
    getDesktopWorkbenchContext().getWorkbookCtrl().newBook();
    getDesktopWorkbenchContext().fireWorkbookChanged();
  }
 
  public void onClick$openFile() {
    getDesktopWorkbenchContext().getWorkbenchCtrl().openOpenFileDialog();
  }
 
  public void onClick$saveFile() {
    //TODO: refactor duplicate save logic
    DesktopWorkbenchContext workbench = getDesktopWorkbenchContext();
    if (workbench.getWorkbookCtrl().hasFileExtentionName()) {
      workbench.getWorkbookCtrl().save();
      workbench.fireWorkbookSaved();
    } else
      workbench.getWorkbenchCtrl().openSaveFileDialog();
  }
 
  public void onClick$saveFileAs() {
    throw new UiException("save is not implement yet");
  }
 
  public void onClick$saveFileAndClose() {
    //TODO: refactor duplicate save logic
    DesktopWorkbenchContext workbench = getDesktopWorkbenchContext();
    if (workbench.getWorkbookCtrl().hasFileExtentionName()) {
      workbench.getWorkbookCtrl().save();
      workbench.getWorkbookCtrl().close();
      workbench.fireWorkbookSaved();
      workbench.fireWorkbookChanged();
    } else
      workbench.getWorkbenchCtrl().openSaveFileDialog();
  }
 
  public void onClick$deleteFile() {
    DesktopWorkbenchContext workbench = getDesktopWorkbenchContext();
    if(!workbench.getWorkbookCtrl().hasFileExtentionName()) {
      workbench.getWorkbookCtrl().close();
      workbench.fireWorkbookChanged();
      return;
    }
   
    WorkspaceContext.getInstance(Executions.getCurrent().getDesktop()).
      delete(workbench.getWorkbookCtrl().getSrc());
    workbench.getWorkbookCtrl().close();
    workbench.fireWorkbookChanged();
  }
 
  public void onClick$importFile() {
    getDesktopWorkbenchContext().getWorkbenchCtrl().openImportFileDialog();
  }
 
  public void onClick$exportPdf() {
    getDesktopWorkbenchContext().getWorkbenchCtrl().openExportPdfDialog(null);
  }

  public void onClick$exportHtml() {
    getDesktopWorkbenchContext().getWorkbenchCtrl().openExportHtmlDialog(null);
  }
 
  public void onClick$exportExcel() {
    WorkbookCtrl bookCtrl = getDesktopWorkbenchContext().getWorkbookCtrl();
    ByteArrayOutputStream out = bookCtrl.exportToExcel();
    Filedownload.save(out.toByteArray(), "application/file", bookCtrl.getBookName());
  }
 
  public void onClick$fileReversion() {
    throw new UiException("reversion not implement yet");
  }
 
  public void onClick$print() {
    throw new UiException("print not implement yet");
  }
 
  public void onOpen$fileMenupopup() {
    getDesktopWorkbenchContext().getWorkbookCtrl().reGainFocus();
  }
 
  protected DesktopWorkbenchContext getDesktopWorkbenchContext() {
    return Zssapp.getDesktopWorkbenchContext(this);
  }
 
  public void onCreate() {
        final DesktopWorkbenchContext workbenchCtrl = getDesktopWorkbenchContext();
        getDesktopWorkbenchContext().addEventListener(Consts.ON_WORKBOOK_CHANGED, new EventListener() {
            public void onEvent(Event event) throws Exception {
                boolean isOpen = workbenchCtrl.getWorkbookCtrl().hasBook();
                boolean savePermission = FileHelper.hasSavePermission();
               
          if (isOpen) {
            boolean isPE = WebApps.getFeature("pe");
            deleteFile.setDisabled(false);
            exportPdf.setDisabled(_exportToPdfDisabled | !isPE | false );
            exportHtml.setDisabled(_exportToHtmlDisabled | !isPE | false);
            exportExcel.setDisabled(_exportToExcelDisabled | !isPE | false);
            saveFile.setDisabled(!savePermission);
            saveFileAndClose.setDisabled(!savePermission);
          } else {
            deleteFile.setDisabled(true);
            exportPdf.setDisabled(true);
            exportHtml.setDisabled(true);
            exportExcel.setDisabled(true);
            saveFile.setDisabled(true);
            saveFileAndClose.setDisabled(true);
          }
            }
        });
  }
}
TOP

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

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.