/** * Sencha GXT 3.0.0b - Sencha for GWT * Copyright(c) 2007-2012, Sencha, Inc. * licensing@sencha.com * * http://www.sencha.com/products/gxt/license/ */ package com.sencha.gxt.desktopapp.client.filemanager; import java.util.Date; import java.util.List; import com.google.gwt.user.client.ui.HasWidgets; import com.sencha.gxt.desktopapp.client.DesktopBus; import com.sencha.gxt.desktopapp.client.event.OpenFileModelEvent; import com.sencha.gxt.desktopapp.client.event.SelectFileModelEvent; import com.sencha.gxt.desktopapp.client.persistence.FileModel; import com.sencha.gxt.desktopapp.client.persistence.FileModel.FileType; import com.sencha.gxt.desktopapp.client.persistence.FileSystem; public class FileManagerPresenterImpl implements FileManagerPresenter { private FileSystem fileSystem; private DesktopBus desktopBus; private FileManagerView fileManagerView; private boolean isNewlyCreated; public FileManagerPresenterImpl(FileSystem fileSystem, DesktopBus desktopBus) { this.fileSystem = fileSystem; this.desktopBus = desktopBus; } public DesktopBus getDesktopBus() { return desktopBus; } @Override public void go(HasWidgets hasWidgets) { hasWidgets.add(getFileManagerView().asWidget()); } @Override public boolean isEnableCreate() { FileModel selectedItem = getFileManagerView().getSelectedItem(); FileType fileType = selectedItem == null ? null : selectedItem.getFileType(); return fileType == null || fileType == FileType.FOLDER; } @Override public boolean isEnableDelete() { FileModel selectedItem = getFileManagerView().getSelectedItem(); return selectedItem != null; } @Override public boolean isEnableEditName() { FileModel selectedItem = getFileManagerView().getSelectedItem(); return selectedItem != null; } @Override public boolean isEnableOpen() { boolean isEnableOpen = false; FileModel selectedItem = getFileManagerView().getSelectedItem(); if (selectedItem != null) { FileType fileType = selectedItem.getFileType(); switch (fileType) { case BOOKMARK: case DOCUMENT: case PROGRAM: case SPREADSHEET: isEnableOpen = true; break; } } return isEnableOpen; } @Override public void onCollapse() { getFileManagerView().collapse(); } @Override public void onCreate(FileType fileType) { FileModel parentFileModel = getFileManagerView().getSelectedItem(); String name = getFileSystem().getNextUntitledFileName(parentFileModel, fileType); FileModel childFileModel = getFileSystem().createFileModel(parentFileModel, name, fileType); getFileManagerView().selectFileModel(childFileModel); isNewlyCreated = true; getFileManagerView().editName(childFileModel); } @Override public void onDelete() { List<FileModel> fileModels = getFileManagerView().getSelectedItems(); for (FileModel fileModel : fileModels) { getFileSystem().remove(fileModel); } } @Override public void onEditFileNameComplete(boolean isSaved) { FileModel fileModel = getFileManagerView().getSelectedItem(); if (fileModel != null) { fileModel.setLastModified(new Date()); } if (isNewlyCreated) { isNewlyCreated = false; if (isSaved) { onOpen(); } else { onDelete(); } } } @Override public void onEditName() { FileModel selectedItem = getFileManagerView().getSelectedItem(); if (selectedItem != null) { getFileManagerView().editName(selectedItem); } } @Override public void onExpand() { getFileManagerView().expand(); } @Override public void onOpen() { List<FileModel> fileModels = getFileManagerView().getSelectedItems(); for (FileModel fileModel : fileModels) { getDesktopBus().fireOpenFileModelEvent(new OpenFileModelEvent(getFileSystem(), fileModel)); } } @Override public void onSelect(FileModel fileModel) { getDesktopBus().fireSelectFileModelEvent(new SelectFileModelEvent(fileModel)); } private FileManagerView getFileManagerView() { if (fileManagerView == null) { fileManagerView = new FileManagerViewImpl(this, getFileSystem()); } return fileManagerView; } private FileSystem getFileSystem() { return fileSystem; } }