Search in sources :

Example 66 with Widget

use of com.google.gwt.user.client.ui.Widget in project pentaho-platform by pentaho.

the class SolutionBrowserPanel method editFile.

public void editFile() {
    if (filesListPanel.getSelectedFileItems() == null || filesListPanel.getSelectedFileItems().size() != 1) {
        return;
    }
    RepositoryFile file = filesListPanel.getSelectedFileItems().get(0).getRepositoryFile();
    if (file.getName().endsWith(".analysisview.xaction")) {
        // $NON-NLS-1$
        openFile(file, COMMAND.RUN);
    } else {
        // check to see if a plugin supports editing
        ContentTypePlugin plugin = PluginOptionsHelper.getContentTypePlugin(file.getName());
        if (plugin != null && plugin.hasCommand(COMMAND.EDIT)) {
            // load the editor for this plugin
            String editUrl = getPath() + "api/repos/" + pathToId(file.getPath()) + "/" + // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            (plugin != null && (plugin.getCommandPerspective(COMMAND.EDIT) != null) ? plugin.getCommandPerspective(COMMAND.EDIT) : "editor");
            // See if it's already loaded
            for (int i = 0; i < contentTabPanel.getTabCount(); i++) {
                Widget w = contentTabPanel.getTab(i).getContent();
                if (w instanceof IFrameTabPanel && ((IFrameTabPanel) w).getUrl().endsWith(editUrl)) {
                    // Already up, select and exit
                    contentTabPanel.selectTab(i);
                    return;
                }
            }
            contentTabPanel.showNewURLTab(Messages.getString("editingColon") + file.getTitle(), Messages.getString("editingColon") + file.getTitle(), editUrl, // $NON-NLS-1$ //$NON-NLS-2$
            true);
        } else {
            MessageDialogBox dialogBox = new // $NON-NLS-1$
            MessageDialogBox(// $NON-NLS-1$
            Messages.getString("error"), // $NON-NLS-1$
            Messages.getString("cannotEditFileType"), true, false, true);
            dialogBox.center();
        }
    }
}
Also used : MessageDialogBox(org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox) Widget(com.google.gwt.user.client.ui.Widget) RepositoryFile(org.pentaho.gwt.widgets.client.filechooser.RepositoryFile) IFrameTabPanel(org.pentaho.mantle.client.solutionbrowser.tabs.IFrameTabPanel) JsArrayString(com.google.gwt.core.client.JsArrayString) ContentTypePlugin(org.pentaho.mantle.client.solutionbrowser.PluginOptionsHelper.ContentTypePlugin)

Example 67 with Widget

use of com.google.gwt.user.client.ui.Widget in project pentaho-platform by pentaho.

the class FilePropertiesDialog method applyPanel.

/**
 */
private void applyPanel() {
    ArrayList<RequestBuilder> requestBuilders = new ArrayList<RequestBuilder>();
    for (int i = 0; i < propertyTabs.getTabCount(); i++) {
        Widget w = propertyTabs.getTab(i).getContent();
        if (w instanceof IFileModifier) {
            // get requests from sub panels
            if (((IFileModifier) w).prepareRequests() != null) {
                requestBuilders.addAll(((IFileModifier) w).prepareRequests());
            }
        }
    }
    RequestCallback requestCallback;
    // chain requests from subpanels using callbacks to try and avoid any StaleItemStateExceptions
    for (int i = 0; i <= requestBuilders.size() - 1; i++) {
        RequestBuilder requestBuilder = requestBuilders.get(i);
        if (i < requestBuilders.size() - 1) {
            final RequestBuilder nextRequest = requestBuilders.get(i + 1);
            // This header is required to force Internet Explorer to not cache values from the GET response.
            nextRequest.setHeader("If-Modified-Since", "01 Jan 1970 00:00:00 GMT");
            requestCallback = new ChainedRequestCallback(nextRequest);
        } else {
            requestCallback = new RequestCallback() {

                @Override
                public void onError(Request request, Throwable th) {
                    WaitPopup.getInstance().setVisible(false);
                    MessageDialogBox dialogBox = // $NON-NLS-1$
                    new MessageDialogBox(Messages.getString("error"), th.toString(), false, false, true);
                    dialogBox.center();
                }

                @Override
                public void onResponseReceived(Request arg0, Response arg1) {
                    WaitPopup.getInstance().setVisible(false);
                    if (arg1.getStatusCode() == Response.SC_OK) {
                        dirty = false;
                        // Refresh current folder or parent folder
                        PerspectiveManager.getInstance().setPerspective(PerspectiveManager.BROWSER_PERSPECTIVE);
                        GenericEvent ge = new GenericEvent();
                        ge.setEventSubType("RefreshFolderEvent");
                        ge.setStringParam(parentPath);
                        EventBusUtil.EVENT_BUS.fireEvent(ge);
                    } else {
                        MessageDialogBox dialogBox = new MessageDialogBox(Messages.getString("error"), Messages.getString("operationPermissionDenied"), false, false, // $NON-NLS-1$
                        true);
                        dialogBox.center();
                    }
                }
            };
        }
        requestBuilder.setCallback(requestCallback);
    }
    // start the chain
    try {
        if (!requestBuilders.isEmpty()) {
            WaitPopup.getInstance().setVisible(true);
            requestBuilders.get(0).send();
        }
    } catch (RequestException e) {
    // ignored
    }
}
Also used : RequestBuilder(com.google.gwt.http.client.RequestBuilder) MessageDialogBox(org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox) ArrayList(java.util.ArrayList) Widget(com.google.gwt.user.client.ui.Widget) Request(com.google.gwt.http.client.Request) RequestException(com.google.gwt.http.client.RequestException) Response(com.google.gwt.http.client.Response) RequestCallback(com.google.gwt.http.client.RequestCallback) GenericEvent(org.pentaho.mantle.client.events.GenericEvent)

Example 68 with Widget

use of com.google.gwt.user.client.ui.Widget in project pentaho-platform by pentaho.

the class MantleTabPanel method setContentEditSelected.

public void setContentEditSelected(boolean selected) {
    IFrameTabPanel panel = getCurrentFrame();
    if (panel != null) {
        panel.setEditSelected(selected);
        Widget selectTabContent = null;
        if (getTab(getSelectedTabIndex()) != null) {
            selectTabContent = getTab(getSelectedTabIndex()).getContent();
        }
        List<FileItem> selectedItems = SolutionBrowserPanel.getInstance().getFilesListPanel().getSelectedFileItems();
        EventBusUtil.EVENT_BUS.fireEvent(new SolutionBrowserUndefinedEvent(selectTabContent, selectedItems));
    }
}
Also used : FileItem(org.pentaho.mantle.client.solutionbrowser.filelist.FileItem) Widget(com.google.gwt.user.client.ui.Widget) IFrameTabPanel(org.pentaho.mantle.client.solutionbrowser.tabs.IFrameTabPanel) SolutionBrowserUndefinedEvent(org.pentaho.mantle.client.events.SolutionBrowserUndefinedEvent)

Example 69 with Widget

use of com.google.gwt.user.client.ui.Widget in project pentaho-platform by pentaho.

the class MantleTabPanel method closeTab.

public void closeTab(final PentahoTab closeTab, final boolean invokePreTabCloseHook) {
    if (closeTab.getContent() instanceof IFrameTabPanel) {
        final Element frameElement = ((IFrameTabPanel) closeTab.getContent()).getFrame().getElement();
        String frameId = frameElement.getAttribute("id").replaceAll("\"", "\\\"");
        // #a"b1494409287116 need to be escaped to #a\"b1494409287116.
        if (frameId.indexOf("\"") != -1) {
            frameId = frameId.replaceAll("\"", "");
            frameElement.setAttribute("id", frameId);
        }
        final String finalFrameId = frameId;
        if (invokePreTabCloseHook && hasUnsavedChanges(frameElement)) {
            // prompt user
            VerticalPanel vp = new VerticalPanel();
            // $NON-NLS-1$
            vp.add(new Label(Messages.getString("confirmTabClose")));
            final PromptDialogBox confirmDialog = new PromptDialogBox(Messages.getString("confirm"), Messages.getString("yes"), Messages.getString("no"), false, true, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            vp);
            confirmDialog.setCallback(new IDialogCallback() {

                public void cancelPressed() {
                }

                public void okPressed() {
                    fireCloseTab(finalFrameId);
                    ((CustomFrame) ((IFrameTabPanel) closeTab.getContent()).getFrame()).removeEventListeners(frameElement);
                    clearClosingFrame(frameElement);
                    MantleTabPanel.super.closeTab(closeTab, invokePreTabCloseHook);
                    if (getTabCount() == 0) {
                        allTabsClosed();
                        Widget selectTabContent = null;
                        if (getTab(getSelectedTabIndex()) != null) {
                            selectTabContent = getTab(getSelectedTabIndex()).getContent();
                        }
                        List<FileItem> selectedItems = SolutionBrowserPanel.getInstance().getFilesListPanel().getSelectedFileItems();
                        EventBusUtil.EVENT_BUS.fireEvent(new SolutionBrowserCloseEvent(selectTabContent, selectedItems));
                    }
                }
            });
            confirmDialog.center();
            return;
        }
        fireCloseTab(finalFrameId);
        ((CustomFrame) ((IFrameTabPanel) closeTab.getContent()).getFrame()).removeEventListeners(frameElement);
        clearClosingFrame(frameElement);
    }
    super.closeTab(closeTab, invokePreTabCloseHook);
    // since we can't entirely reclaim the frame resources held, keep some around
    // so we can minimize the extra leakage caused by constantly created more
    // let's only keep 5 of these guys around so at least some of the resources
    // can be cleaned up (maybe just wishful thinking)
    Widget w = closeTab.getContent();
    if (w instanceof IFrameTabPanel && freeFrames.size() < 5) {
        // wipe out any file info so it doesn't impact future usages of this frame
        SolutionFileInfo sfi = null;
        IFrameTabPanel iFrameTabPanel = (IFrameTabPanel) w;
        iFrameTabPanel.setFileInfo(sfi);
        freeFrames.add(iFrameTabPanel);
    }
    if (getTabCount() == 0) {
        allTabsClosed();
        Widget selectTabContent = null;
        if (getTab(getSelectedTabIndex()) != null) {
            selectTabContent = getTab(getSelectedTabIndex()).getContent();
        }
        List<FileItem> selectedItems = SolutionBrowserPanel.getInstance().getFilesListPanel().getSelectedFileItems();
        EventBusUtil.EVENT_BUS.fireEvent(new SolutionBrowserCloseEvent(selectTabContent, selectedItems));
    }
}
Also used : PromptDialogBox(org.pentaho.gwt.widgets.client.dialogs.PromptDialogBox) Element(com.google.gwt.user.client.Element) Label(com.google.gwt.user.client.ui.Label) Widget(com.google.gwt.user.client.ui.Widget) SolutionFileInfo(org.pentaho.mantle.client.objects.SolutionFileInfo) CustomFrame(org.pentaho.mantle.client.solutionbrowser.tabs.IFrameTabPanel.CustomFrame) IDialogCallback(org.pentaho.gwt.widgets.client.dialogs.IDialogCallback) FileItem(org.pentaho.mantle.client.solutionbrowser.filelist.FileItem) VerticalPanel(com.google.gwt.user.client.ui.VerticalPanel) SolutionBrowserCloseEvent(org.pentaho.mantle.client.events.SolutionBrowserCloseEvent) IFrameTabPanel(org.pentaho.mantle.client.solutionbrowser.tabs.IFrameTabPanel) ArrayList(java.util.ArrayList) NodeList(com.google.gwt.dom.client.NodeList) List(java.util.List)

Example 70 with Widget

use of com.google.gwt.user.client.ui.Widget in project pentaho-platform by pentaho.

the class MantleTabPanel method enableContentEdit.

public void enableContentEdit(boolean enable) {
    IFrameTabPanel panel = getCurrentFrame();
    if (panel != null) {
        panel.setEditEnabled(enable);
        Widget selectTabContent = null;
        if (getTab(getSelectedTabIndex()) != null) {
            selectTabContent = getTab(getSelectedTabIndex()).getContent();
        }
        List<FileItem> selectedItems = SolutionBrowserPanel.getInstance().getFilesListPanel().getSelectedFileItems();
        EventBusUtil.EVENT_BUS.fireEvent(new SolutionBrowserUndefinedEvent(selectTabContent, selectedItems));
    }
}
Also used : FileItem(org.pentaho.mantle.client.solutionbrowser.filelist.FileItem) Widget(com.google.gwt.user.client.ui.Widget) IFrameTabPanel(org.pentaho.mantle.client.solutionbrowser.tabs.IFrameTabPanel) SolutionBrowserUndefinedEvent(org.pentaho.mantle.client.events.SolutionBrowserUndefinedEvent)

Aggregations

Widget (com.google.gwt.user.client.ui.Widget)194 Test (org.junit.Test)22 ClickEvent (com.google.gwt.event.dom.client.ClickEvent)16 IsWidget (com.google.gwt.user.client.ui.IsWidget)16 ClickHandler (com.google.gwt.event.dom.client.ClickHandler)15 HTML (com.google.gwt.user.client.ui.HTML)10 ArrayList (java.util.ArrayList)10 IFrameTabPanel (org.pentaho.mantle.client.solutionbrowser.tabs.IFrameTabPanel)10 Element (com.google.gwt.dom.client.Element)9 MaterialWidget (gwt.material.design.client.base.MaterialWidget)9 Label (com.google.gwt.user.client.ui.Label)8 ListItem (gwt.material.design.client.ui.html.ListItem)8 ListBox (org.gwtbootstrap3.client.ui.ListBox)8 ChangeEvent (com.google.gwt.event.dom.client.ChangeEvent)7 ChangeHandler (com.google.gwt.event.dom.client.ChangeHandler)7 Command (com.google.gwt.user.client.Command)7 FileItem (org.pentaho.mantle.client.solutionbrowser.filelist.FileItem)7 Image (com.google.gwt.user.client.ui.Image)6 CubaFileUploadWidget (com.haulmont.cuba.web.toolkit.ui.client.jqueryfileupload.CubaFileUploadWidget)6 Timer (com.google.gwt.user.client.Timer)5