Search in sources :

Example 6 with IDialogCallback

use of org.pentaho.gwt.widgets.client.dialogs.IDialogCallback in project pentaho-platform by pentaho.

the class NewFolderCommand method performOperation.

protected void performOperation(boolean feedback) {
    final SolutionFolderActionEvent event = new SolutionFolderActionEvent();
    event.setAction(this.getClass().getName());
    final TextBox folderNameTextBox = new TextBox();
    folderNameTextBox.setTabIndex(1);
    folderNameTextBox.setVisibleLength(40);
    VerticalPanel vp = new VerticalPanel();
    // $NON-NLS-1$
    vp.add(new Label(Messages.getString("newFolderName")));
    vp.add(folderNameTextBox);
    final PromptDialogBox newFolderDialog = new PromptDialogBox(Messages.getString("newFolder"), Messages.getString("ok"), Messages.getString("cancel"), false, true, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    vp);
    newFolderDialog.setFocusWidget(folderNameTextBox);
    folderNameTextBox.setFocus(true);
    final IDialogCallback callback = new IDialogCallback() {

        public void cancelPressed() {
            newFolderDialog.hide();
        }

        public void okPressed() {
            if (!NameUtils.isValidFolderName(folderNameTextBox.getText())) {
                event.setMessage(Messages.getString("containsIllegalCharacters", folderNameTextBox.getText()));
                EventBusUtil.EVENT_BUS.fireEvent(event);
                return;
            }
            solutionPath = parentFolder.getPath() + "/" + URL.encodePathSegment(folderNameTextBox.getText());
            // $NON-NLS-1$
            String createDirUrl = contextURL + "api/repo/dirs/" + SolutionBrowserPanel.pathToId(solutionPath);
            RequestBuilder createDirRequestBuilder = new RequestBuilder(RequestBuilder.PUT, createDirUrl);
            try {
                createDirRequestBuilder.setHeader("If-Modified-Since", "01 Jan 1970 00:00:00 GMT");
                createDirRequestBuilder.sendRequest("", new RequestCallback() {

                    @Override
                    public void onError(Request createFolderRequest, Throwable exception) {
                        MessageDialogBox dialogBox = new MessageDialogBox(// $NON-NLS-1$ //$NON-NLS-2$
                        Messages.getString("error"), // $NON-NLS-1$ //$NON-NLS-2$
                        Messages.getString("couldNotCreateFolder", folderNameTextBox.getText()), false, false, true);
                        dialogBox.center();
                        event.setMessage(Messages.getString("couldNotCreateFolder", folderNameTextBox.getText()));
                        EventBusUtil.EVENT_BUS.fireEvent(event);
                    }

                    @Override
                    public void onResponseReceived(Request createFolderRequest, Response createFolderResponse) {
                        if (createFolderResponse.getStatusCode() == 200) {
                            NewFolderCommand.this.callback.onHandle(solutionPath);
                            new RefreshRepositoryCommand().execute(false);
                            event.setMessage("Success");
                            FileChooserDialog.setIsDirty(Boolean.TRUE);
                            setBrowseRepoDirty(Boolean.TRUE);
                            EventBusUtil.EVENT_BUS.fireEvent(event);
                        } else {
                            event.setMessage(StringUtils.isEmpty(createFolderResponse.getText()) || Messages.getString(createFolderResponse.getText()) == null ? // $NON-NLS-1$
                            Messages.getString("couldNotCreateFolder", folderNameTextBox.getText()) : Messages.getString(createFolderResponse.getText(), folderNameTextBox.getText()));
                            EventBusUtil.EVENT_BUS.fireEvent(event);
                        }
                    }
                });
            } catch (RequestException e) {
                Window.alert(e.getLocalizedMessage());
                event.setMessage(e.getLocalizedMessage());
                EventBusUtil.EVENT_BUS.fireEvent(event);
            }
        }
    };
    newFolderDialog.setCallback(callback);
    newFolderDialog.center();
}
Also used : RequestBuilder(com.google.gwt.http.client.RequestBuilder) MessageDialogBox(org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox) PromptDialogBox(org.pentaho.gwt.widgets.client.dialogs.PromptDialogBox) SolutionFolderActionEvent(org.pentaho.mantle.client.events.SolutionFolderActionEvent) Label(com.google.gwt.user.client.ui.Label) Request(com.google.gwt.http.client.Request) TextBox(com.google.gwt.user.client.ui.TextBox) IDialogCallback(org.pentaho.gwt.widgets.client.dialogs.IDialogCallback) RequestException(com.google.gwt.http.client.RequestException) Response(com.google.gwt.http.client.Response) VerticalPanel(com.google.gwt.user.client.ui.VerticalPanel) RequestCallback(com.google.gwt.http.client.RequestCallback)

Example 7 with IDialogCallback

use of org.pentaho.gwt.widgets.client.dialogs.IDialogCallback in project pentaho-platform by pentaho.

the class PasteFilesCommand method performOperation.

/*
   * (non-Javadoc)
   *
   * @see org.pentaho.mantle.client.commands.AbstractCommand#performOperation(boolean)
   */
@Override
protected void performOperation(boolean feedback) {
    final SolutionBrowserClipboard clipBoard = SolutionBrowserClipboard.getInstance();
    @SuppressWarnings("unchecked") final List<SolutionBrowserFile> clipboardFileItems = clipBoard.getClipboardItems();
    if (clipboardFileItems != null && clipboardFileItems.size() > 0 && getSolutionPath() != null) {
        String getChildrenUrl = contextURL + "api/repo/files/" + SolutionBrowserPanel.pathToId(getSolutionPath()) + "/tree?depth=1" + "&showHidden=" + // $NON-NLS-1$ //$NON-NLS-2$
        SolutionBrowserPanel.getInstance().getSolutionTree().isShowHiddenFiles();
        RequestBuilder childrenRequestBuilder = new RequestBuilder(RequestBuilder.GET, getChildrenUrl);
        try {
            childrenRequestBuilder.setHeader("If-Modified-Since", "01 Jan 1970 00:00:00 GMT");
            childrenRequestBuilder.sendRequest(null, new RequestCallback() {

                @Override
                public void onError(Request getChildrenRequest, Throwable exception) {
                    Window.alert(exception.getLocalizedMessage());
                    event.setMessage(exception.getLocalizedMessage());
                    EventBusUtil.EVENT_BUS.fireEvent(event);
                }

                @Override
                public void onResponseReceived(Request getChildrenRequest, Response getChildrenResponse) {
                    event.setMessage("Click");
                    EventBusUtil.EVENT_BUS.fireEvent(event);
                    boolean cutSameDir = false;
                    if (getChildrenResponse.getStatusCode() >= 200 && getChildrenResponse.getStatusCode() < 300) {
                        boolean promptForOptions = false;
                        Document children = XMLParser.parse(getChildrenResponse.getText());
                        NodeList childrenNameNodes = children.getElementsByTagName(NAME_NODE_TAG);
                        List<String> childNames = new ArrayList<String>();
                        for (int i = 0; i < childrenNameNodes.getLength(); i++) {
                            Node childNameNode = childrenNameNodes.item(i);
                            childNames.add(childNameNode.getFirstChild().getNodeValue());
                        }
                        for (SolutionBrowserFile file : clipboardFileItems) {
                            if (file.getPath() != null) {
                                String pasteFileParentPath = file.getPath();
                                // $NON-NLS-1$
                                String fileNameWithExt = pasteFileParentPath.substring(pasteFileParentPath.lastIndexOf("/") + 1, pasteFileParentPath.length());
                                // $NON-NLS-1$
                                pasteFileParentPath = pasteFileParentPath.substring(0, pasteFileParentPath.lastIndexOf("/"));
                                if (childNames.contains(fileNameWithExt) && !getSolutionPath().equals(pasteFileParentPath)) {
                                    promptForOptions = true;
                                    break;
                                } else if (childNames.contains(fileNameWithExt) && getSolutionPath().equals(pasteFileParentPath) && SolutionBrowserClipboard.getInstance().getClipboardAction() == SolutionBrowserClipboard.ClipboardAction.CUT) {
                                    cutSameDir = true;
                                    break;
                                }
                            }
                        }
                        if (promptForOptions) {
                            final OverwritePromptDialog overwriteDialog = new OverwritePromptDialog();
                            final IDialogCallback callback = new IDialogCallback() {

                                public void cancelPressed() {
                                    event.setMessage("Cancel");
                                    EventBusUtil.EVENT_BUS.fireEvent(event);
                                    overwriteDialog.hide();
                                }

                                public void okPressed() {
                                    performSave(clipBoard, overwriteDialog.getOverwriteMode());
                                }
                            };
                            overwriteDialog.setCallback(callback);
                            overwriteDialog.center();
                        } else {
                            if (!cutSameDir) {
                                performSave(clipBoard, 2);
                            } else {
                                event.setMessage("Cancel");
                                EventBusUtil.EVENT_BUS.fireEvent(event);
                            }
                        }
                    } else {
                        Window.alert(getChildrenResponse.getText());
                    }
                }
            });
        } catch (RequestException e) {
            Window.alert(e.getLocalizedMessage());
        }
    }
}
Also used : SolutionBrowserFile(org.pentaho.mantle.client.solutionbrowser.SolutionBrowserFile) RequestBuilder(com.google.gwt.http.client.RequestBuilder) NodeList(com.google.gwt.xml.client.NodeList) Node(com.google.gwt.xml.client.Node) Request(com.google.gwt.http.client.Request) Document(com.google.gwt.xml.client.Document) IDialogCallback(org.pentaho.gwt.widgets.client.dialogs.IDialogCallback) RequestException(com.google.gwt.http.client.RequestException) Response(com.google.gwt.http.client.Response) RequestCallback(com.google.gwt.http.client.RequestCallback) OverwritePromptDialog(org.pentaho.mantle.client.dialogs.OverwritePromptDialog) ArrayList(java.util.ArrayList) List(java.util.List) NodeList(com.google.gwt.xml.client.NodeList) SolutionBrowserClipboard(org.pentaho.mantle.client.solutionbrowser.SolutionBrowserClipboard)

Example 8 with IDialogCallback

use of org.pentaho.gwt.widgets.client.dialogs.IDialogCallback in project pentaho-platform by pentaho.

the class ImportDialog method onOk.

protected void onOk() {
    IDialogCallback callback = this.getCallback();
    IDialogValidatorCallback validatorCallback = this.getValidatorCallback();
    if (validatorCallback == null || (validatorCallback != null && validatorCallback.validate())) {
        try {
            if (callback != null) {
                setFormAction();
                callback.okPressed();
            }
        } catch (Throwable dontCare) {
        // ignored
        }
    }
}
Also used : IDialogCallback(org.pentaho.gwt.widgets.client.dialogs.IDialogCallback) IDialogValidatorCallback(org.pentaho.gwt.widgets.client.dialogs.IDialogValidatorCallback)

Example 9 with IDialogCallback

use of org.pentaho.gwt.widgets.client.dialogs.IDialogCallback in project pentaho-platform by pentaho.

the class SchedulesPanel method promptForScheduleResourceError.

private void promptForScheduleResourceError(final JsJob job) {
    final PromptDialogBox prompt = new PromptDialogBox(Messages.getString("fileUnavailable"), Messages.getString("yesDelete"), Messages.getString("no"), false, true);
    prompt.setContent(new HTML(Messages.getString("editScheduleResourceDoesNotExist", job.getFullResourceName())));
    prompt.setCallback(new IDialogCallback() {

        public void okPressed() {
            HashSet<JsJob> jobSet = new HashSet<JsJob>();
            jobSet.add(job);
            controlJobs(jobSet, "removeJob", RequestBuilder.DELETE, true);
            prompt.hide();
        }

        public void cancelPressed() {
            prompt.hide();
        }
    });
    prompt.setWidth("530px");
    prompt.center();
}
Also used : PromptDialogBox(org.pentaho.gwt.widgets.client.dialogs.PromptDialogBox) HTML(com.google.gwt.user.client.ui.HTML) IDialogCallback(org.pentaho.gwt.widgets.client.dialogs.IDialogCallback) HashSet(java.util.HashSet)

Example 10 with IDialogCallback

use of org.pentaho.gwt.widgets.client.dialogs.IDialogCallback in project pentaho-platform by pentaho.

the class SchedulesPanel method createUI.

private void createUI(boolean isAdmin, final boolean isScheduler) {
    table.getElement().setId("schedule-table");
    table.setStylePrimaryName("pentaho-table");
    table.setWidth("100%", true);
    // BISERVER-9331 Column sort indicators should be to the right of header text in the Manage Schedules table.
    if (table.getHeaderBuilder() instanceof AbstractHeaderOrFooterBuilder) {
        ((AbstractHeaderOrFooterBuilder<JsJob>) table.getHeaderBuilder()).setSortIconStartOfLine(false);
    }
    final MultiSelectionModel<JsJob> selectionModel = new MultiSelectionModel<JsJob>(new ProvidesKey<JsJob>() {

        public Object getKey(JsJob item) {
            return item.getJobId();
        }
    });
    table.setSelectionModel(selectionModel);
    Label noDataLabel = new Label(Messages.getString("noSchedules"));
    noDataLabel.setStyleName("noDataForScheduleTable");
    table.setEmptyTableWidget(noDataLabel);
    TextColumn<JsJob> idColumn = new TextColumn<JsJob>() {

        public String getValue(JsJob job) {
            return job.getJobId();
        }
    };
    idColumn.setSortable(true);
    TextColumn<JsJob> nameColumn = new TextColumn<JsJob>() {

        public String getValue(JsJob job) {
            return job.getJobName();
        }
    };
    nameColumn.setSortable(true);
    HtmlColumn<JsJob> resourceColumn = new HtmlColumn<JsJob>() {

        @Override
        public String getStringValue(JsJob job) {
            String name = job.getFullResourceName().split("\\.")[0];
            return name.replaceAll("/", "/<wbr/>");
        }
    };
    resourceColumn.setSortable(true);
    HtmlColumn<JsJob> outputPathColumn = new HtmlColumn<JsJob>(new ClickableSafeHtmlCell()) {

        @Override
        public String getStringValue(JsJob jsJob) {
            try {
                String outputPath = jsJob.getOutputPath();
                if (StringUtils.isEmpty(outputPath)) {
                    return "-";
                } else {
                    outputPath = new SafeHtmlBuilder().appendEscaped(outputPath).toSafeHtml().asString();
                    return MessageFormat.format("<span class=''workspace-resource-link'' title=''{0}''>{0}</span>", outputPath);
                }
            } catch (Throwable t) {
                return "-";
            }
        }
    };
    outputPathColumn.setFieldUpdater(new FieldUpdater<JsJob, SafeHtml>() {

        @Override
        public void update(final int index, final JsJob jsJob, final SafeHtml value) {
            if (!value.equals("-")) {
                final Command errorCallback = new Command() {

                    @Override
                    public void execute() {
                        showValidateOutputLocationError();
                    }
                };
                final Command successCallback = new Command() {

                    @Override
                    public void execute() {
                        openOutputLocation(jsJob.getOutputPath());
                    }
                };
                OutputLocationUtils.validateOutputLocation(jsJob.getOutputPath(), successCallback, errorCallback);
            }
        }
    });
    outputPathColumn.setSortable(true);
    TextColumn<JsJob> scheduleColumn = new TextColumn<JsJob>() {

        public String getValue(JsJob job) {
            try {
                return job.getJobTrigger().getDescription();
            } catch (Throwable t) {
                return "-";
            }
        }
    };
    scheduleColumn.setSortable(true);
    TextColumn<JsJob> userNameColumn = new TextColumn<JsJob>() {

        public String getValue(JsJob job) {
            try {
                return job.getUserName();
            } catch (Throwable t) {
                return "-";
            }
        }
    };
    userNameColumn.setSortable(true);
    TextColumn<JsJob> stateColumn = new TextColumn<JsJob>() {

        public String getValue(JsJob job) {
            try {
                // BISERVER-9965
                final String jobState = "COMPLETE".equalsIgnoreCase(job.getState()) ? "FINISHED" : job.getState();
                // not css text-transform because tooltip will use pure text from the cell
                return jobState.substring(0, 1).toUpperCase() + jobState.substring(1).toLowerCase();
            } catch (Throwable t) {
                return "-";
            }
        }
    };
    stateColumn.setSortable(true);
    TextColumn<JsJob> nextFireColumn = new TextColumn<JsJob>() {

        public String getValue(JsJob job) {
            try {
                Date date = job.getNextRun();
                if (date == null) {
                    return "-";
                }
                DateTimeFormat format = DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM);
                return format.format(date);
            } catch (Throwable t) {
                return "-";
            }
        }
    };
    nextFireColumn.setSortable(true);
    TextColumn<JsJob> lastFireColumn = new TextColumn<JsJob>() {

        public String getValue(JsJob job) {
            try {
                Date date = job.getLastRun();
                if (date == null) {
                    return "-";
                }
                DateTimeFormat format = DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM);
                return format.format(date);
            } catch (Throwable t) {
                return "-";
            }
        }
    };
    lastFireColumn.setSortable(true);
    // table.addColumn(idColumn, "ID");
    table.addColumn(nameColumn, Messages.getString("scheduleName"));
    table.addColumn(scheduleColumn, Messages.getString("recurrence"));
    table.addColumn(resourceColumn, Messages.getString("sourceFile"));
    table.addColumn(outputPathColumn, Messages.getString("outputPath"));
    table.addColumn(lastFireColumn, Messages.getString("lastFire"));
    table.addColumn(nextFireColumn, Messages.getString("nextFire"));
    if (isAdmin) {
        table.addColumn(userNameColumn, Messages.getString("user"));
    }
    table.addColumn(stateColumn, Messages.getString("state"));
    table.addColumnStyleName(0, "backgroundContentHeaderTableCell");
    table.addColumnStyleName(1, "backgroundContentHeaderTableCell");
    table.addColumnStyleName(2, "backgroundContentHeaderTableCell");
    table.addColumnStyleName(3, "backgroundContentHeaderTableCell");
    table.addColumnStyleName(4, "backgroundContentHeaderTableCell");
    table.addColumnStyleName(5, "backgroundContentHeaderTableCell");
    if (isAdmin) {
        table.addColumnStyleName(6, "backgroundContentHeaderTableCell");
    }
    table.addColumnStyleName(isAdmin ? 7 : 6, "backgroundContentHeaderTableCell");
    table.setColumnWidth(nameColumn, 160, Unit.PX);
    table.setColumnWidth(resourceColumn, 200, Unit.PX);
    table.setColumnWidth(outputPathColumn, 180, Unit.PX);
    table.setColumnWidth(scheduleColumn, 170, Unit.PX);
    table.setColumnWidth(lastFireColumn, 120, Unit.PX);
    table.setColumnWidth(nextFireColumn, 120, Unit.PX);
    if (isAdmin) {
        table.setColumnWidth(userNameColumn, 100, Unit.PX);
    }
    table.setColumnWidth(stateColumn, 90, Unit.PX);
    dataProvider.addDataDisplay(table);
    List<JsJob> list = dataProvider.getList();
    ListHandler<JsJob> columnSortHandler = new ListHandler<JsJob>(list);
    columnSortHandler.setComparator(idColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 != null) {
                return (o2 != null) ? o1.getJobId().compareTo(o2.getJobId()) : 1;
            }
            return -1;
        }
    });
    columnSortHandler.setComparator(nameColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 != null) {
                return (o2 != null) ? o1.getJobName().compareTo(o2.getJobName()) : 1;
            }
            return -1;
        }
    });
    columnSortHandler.setComparator(resourceColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 != null) {
                String r1 = o1.getShortResourceName();
                String r2 = null;
                if (o2 != null) {
                    r2 = o2.getShortResourceName();
                }
                return (o2 != null) ? r1.compareTo(r2) : 1;
            }
            return -1;
        }
    });
    columnSortHandler.setComparator(outputPathColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 != null) {
                String r1 = o1.getOutputPath();
                String r2 = null;
                if (o2 != null) {
                    r2 = o2.getOutputPath();
                }
                return (o2 != null) ? r1.compareTo(r2) : 1;
            }
            return -1;
        }
    });
    columnSortHandler.setComparator(scheduleColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            String s1 = o1.getJobTrigger().getDescription();
            String s2 = o2.getJobTrigger().getDescription();
            return s1.compareTo(s2);
        }
    });
    columnSortHandler.setComparator(userNameColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 != null) {
                return (o2 != null) ? o1.getUserName().compareTo(o2.getUserName()) : 1;
            }
            return -1;
        }
    });
    columnSortHandler.setComparator(stateColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 != null) {
                return (o2 != null) ? o1.getState().compareTo(o2.getState()) : 1;
            }
            return -1;
        }
    });
    columnSortHandler.setComparator(nextFireColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 == null || o1.getNextRun() == null) {
                return -1;
            }
            if (o2 == null || o2.getNextRun() == null) {
                return 1;
            }
            if (o1.getNextRun() == o2.getNextRun()) {
                return 0;
            }
            return o1.getNextRun().compareTo(o2.getNextRun());
        }
    });
    columnSortHandler.setComparator(lastFireColumn, new Comparator<JsJob>() {

        public int compare(JsJob o1, JsJob o2) {
            if (o1 == o2) {
                return 0;
            }
            if (o1 == null || o1.getLastRun() == null) {
                return -1;
            }
            if (o2 == null || o2.getLastRun() == null) {
                return 1;
            }
            if (o1.getLastRun() == o2.getLastRun()) {
                return 0;
            }
            return o1.getLastRun().compareTo(o2.getLastRun());
        }
    });
    table.addColumnSortHandler(columnSortHandler);
    table.getColumnSortList().push(idColumn);
    table.getColumnSortList().push(resourceColumn);
    table.getColumnSortList().push(outputPathColumn);
    table.getColumnSortList().push(nameColumn);
    table.getSelectionModel().addSelectionChangeHandler(new Handler() {

        public void onSelectionChange(SelectionChangeEvent event) {
            Set<JsJob> selectedJobs = getSelectedJobs();
            if (selectedJobs != null && selectedJobs.size() > 0) {
                JsJob[] jobs = selectedJobs.toArray(new JsJob[selectedJobs.size()]);
                editButton.setEnabled(isScheduler);
                if ("NORMAL".equalsIgnoreCase(jobs[0].getState())) {
                    controlScheduleButton.setImage(ImageUtil.getThemeableImage("icon-small", "icon-stop"));
                } else {
                    controlScheduleButton.setImage(ImageUtil.getThemeableImage("icon-small", "icon-run"));
                }
                controlScheduleButton.setEnabled(isScheduler);
                boolean isRunning = "NORMAL".equalsIgnoreCase(jobs[0].getState());
                controlScheduleButton.setToolTip(isRunning ? Messages.getString("stop") : Messages.getString("start"));
                scheduleRemoveButton.setEnabled(isScheduler);
                triggerNowButton.setEnabled(isScheduler);
            } else {
                editButton.setEnabled(false);
                controlScheduleButton.setEnabled(false);
                scheduleRemoveButton.setEnabled(false);
                triggerNowButton.setEnabled(false);
            }
        }
    });
    // BISERVER-9965
    table.addCellPreviewHandler(new CellPreviewEvent.Handler<JsJob>() {

        @Override
        public void onCellPreview(CellPreviewEvent<JsJob> event) {
            if ("mouseover".equals(event.getNativeEvent().getType())) {
                final TableCellElement cell = table.getRowElement(event.getIndex()).getCells().getItem(event.getColumn());
                cell.setTitle(cell.getInnerText());
            }
        }
    });
    SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
    pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true) {

        @Override
        public void setPageStart(int index) {
            if (getDisplay() != null) {
                Range range = getDisplay().getVisibleRange();
                int pageSize = range.getLength();
                // Removed the min to show fixed ranges
                // if (isRangeLimited && display.isRowCountExact()) {
                // index = Math.min(index, display.getRowCount() - pageSize);
                // }
                index = Math.max(0, index);
                if (index != range.getStart()) {
                    getDisplay().setVisibleRange(index, pageSize);
                }
            }
        }
    };
    pager.setDisplay(table);
    // pager.setRangeLimited(false);
    VerticalPanel tableAndPager = new VerticalPanel();
    tableAndPager.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    Toolbar bar = new Toolbar();
    bar.addSpacer(10);
    bar.add(Toolbar.GLUE);
    // Add control scheduler button
    if (isAdmin) {
        final ToolbarButton controlSchedulerButton = new ToolbarButton(ImageUtil.getThemeableImage("icon-small", "icon-start-scheduler"));
        controlSchedulerButton.setCommand(new Command() {

            public void execute() {
                toggleSchedulerOnOff(controlSchedulerButton, isScheduler);
            }
        });
        updateControlSchedulerButtonState(controlSchedulerButton, isScheduler);
        bar.add(controlSchedulerButton);
        bar.addSpacer(20);
    }
    // Add filter button
    filterButton.setCommand(new Command() {

        public void execute() {
            if (filterDialog == null) {
                filterDialog = new FilterDialog(allJobs, filterDialogCallback);
            } else {
                filterDialog.initUI(allJobs);
            }
            filterDialog.center();
        }
    });
    filterButton.setToolTip(Messages.getString("filterSchedules"));
    if (isAdmin) {
        bar.add(filterButton);
    }
    // Add remove filters button
    filterRemoveButton.setCommand(new Command() {

        public void execute() {
            filterDialog = null;
            filters.clear();
            filterAndShowData();
            filterRemoveButton.setEnabled(false);
            filterButton.setImage(ImageUtil.getThemeableImage("icon-small", "icon-filter-add"));
        }
    });
    filterRemoveButton.setToolTip(Messages.getString("removeFilters"));
    filterRemoveButton.setEnabled(filters.size() > 0);
    if (isAdmin) {
        bar.add(filterRemoveButton);
    }
    // Add refresh button
    ToolbarButton refresh = new ToolbarButton(ImageUtil.getThemeableImage("icon-small", "icon-refresh"));
    refresh.setToolTip(Messages.getString("refreshTooltip"));
    refresh.setCommand(new Command() {

        public void execute() {
            RefreshSchedulesCommand cmd = new RefreshSchedulesCommand();
            cmd.execute();
        }
    });
    bar.add(refresh);
    bar.addSpacer(20);
    // Add execute now button
    triggerNowButton.setToolTip(Messages.getString("executeNow"));
    triggerNowButton.setCommand(new Command() {

        public void execute() {
            Set<JsJob> selectedJobs = getSelectedJobs();
            if (selectedJobs != null && selectedJobs.size() > 0) {
                MessageDialogBox messageDialog = new MessageDialogBox(Messages.getString("executeNow"), Messages.getString("executeNowStarted"), false, true, true);
                messageDialog.setCallback(new IDialogCallback() {

                    public void okPressed() {
                        // wait a little to refresh to give schedule time to update the last run
                        Timer t = new Timer() {

                            public void run() {
                                refresh();
                            }
                        };
                        t.schedule(2000);
                    }

                    public void cancelPressed() {
                    }
                });
                messageDialog.center();
                controlJobs(selectedJobs, "triggerNow", RequestBuilder.POST, false);
            }
        }
    });
    triggerNowButton.setEnabled(false);
    bar.add(triggerNowButton);
    // Add control schedule button
    controlScheduleButton.setCommand(new Command() {

        public void execute() {
            Set<JsJob> selectedJobs = getSelectedJobs();
            if (selectedJobs != null && selectedJobs.size() > 0) {
                JsJob[] jobs = selectedJobs.toArray(new JsJob[selectedJobs.size()]);
                if ("NORMAL".equals(jobs[0].getState())) {
                    controlJobs(selectedJobs, "pauseJob", RequestBuilder.POST, false);
                } else {
                    controlJobs(selectedJobs, "resumeJob", RequestBuilder.POST, false);
                }
            }
        }
    });
    controlScheduleButton.setEnabled(false);
    bar.add(controlScheduleButton);
    bar.addSpacer(20);
    // Add edit button
    editButton.setCommand(new Command() {

        public void execute() {
            Set<JsJob> selectedJobs = getSelectedJobs();
            if (selectedJobs != null && selectedJobs.size() > 0) {
                JsJob[] jobs = selectedJobs.toArray(new JsJob[selectedJobs.size()]);
                final JsJob editJob = jobs[0];
                final String url = GWT.getHostPageBaseURL() + "api/repo/files/" + SolutionBrowserPanel.pathToId(editJob.getFullResourceName()) + "/canAccess?cb=" + System.currentTimeMillis() + "&permissions=" + READ_PERMISSION;
                RequestBuilder executableTypesRequestBuilder = new RequestBuilder(RequestBuilder.GET, url);
                try {
                    executableTypesRequestBuilder.setHeader("If-Modified-Since", "01 Jan 1970 00:00:00 GMT");
                    executableTypesRequestBuilder.sendRequest(null, new RequestCallback() {

                        public void onError(Request request, Throwable exception) {
                            promptForScheduleResourceError(editJob);
                        }

                        public void onResponseReceived(Request request, Response response) {
                            if ("true".equalsIgnoreCase(response.getText())) {
                                editJob(editJob);
                            } else {
                                promptForScheduleResourceError(editJob);
                            }
                        }
                    });
                } catch (RequestException e) {
                // showError(e);
                }
            }
        }
    });
    editButton.setEnabled(false);
    editButton.setToolTip(Messages.getString("editTooltip"));
    bar.add(editButton);
    // Add remove button
    scheduleRemoveButton.setCommand(new Command() {

        public void execute() {
            Set<JsJob> selectedJobs = getSelectedJobs();
            if (selectedJobs != null && selectedJobs.size() > 0) {
                final PromptDialogBox prompt = new PromptDialogBox(Messages.getString("warning"), Messages.getString("yes"), Messages.getString("no"), false, true);
                prompt.setContent(new Label(Messages.getString("deleteConfirmSchedles", "" + selectedJobs.size())));
                prompt.setCallback(new IDialogCallback() {

                    public void okPressed() {
                        controlJobs(getSelectedJobs(), "removeJob", RequestBuilder.DELETE, true);
                        prompt.hide();
                    }

                    public void cancelPressed() {
                        prompt.hide();
                    }
                });
                prompt.center();
            }
        }
    });
    scheduleRemoveButton.setToolTip(Messages.getString("remove"));
    scheduleRemoveButton.setEnabled(false);
    bar.add(scheduleRemoveButton);
    tableAndPager.add(bar);
    tableAndPager.add(table);
    tableAndPager.add(pager);
    // Add it to the root panel.
    setWidget(tableAndPager);
}
Also used : RefreshSchedulesCommand(org.pentaho.mantle.client.commands.RefreshSchedulesCommand) SafeHtml(com.google.gwt.safehtml.shared.SafeHtml) Label(com.google.gwt.user.client.ui.Label) JSONString(com.google.gwt.json.client.JSONString) ToolbarButton(org.pentaho.gwt.widgets.client.toolbar.ToolbarButton) AbstractHeaderOrFooterBuilder(com.google.gwt.user.cellview.client.AbstractHeaderOrFooterBuilder) TextColumn(com.google.gwt.user.cellview.client.TextColumn) Toolbar(org.pentaho.gwt.widgets.client.toolbar.Toolbar) MessageDialogBox(org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox) ListHandler(com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler) Handler(com.google.gwt.view.client.SelectionChangeEvent.Handler) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder) Range(com.google.gwt.view.client.Range) IDialogCallback(org.pentaho.gwt.widgets.client.dialogs.IDialogCallback) SelectionChangeEvent(com.google.gwt.view.client.SelectionChangeEvent) JSONObject(com.google.gwt.json.client.JSONObject) TableCellElement(com.google.gwt.dom.client.TableCellElement) Set(java.util.Set) HashSet(java.util.HashSet) RequestBuilder(com.google.gwt.http.client.RequestBuilder) PromptDialogBox(org.pentaho.gwt.widgets.client.dialogs.PromptDialogBox) MultiSelectionModel(com.google.gwt.view.client.MultiSelectionModel) RequestException(com.google.gwt.http.client.RequestException) HtmlColumn(org.pentaho.mantle.client.ui.column.HtmlColumn) ListHandler(com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler) Request(com.google.gwt.http.client.Request) SimplePager(com.google.gwt.user.cellview.client.SimplePager) Date(java.util.Date) CellPreviewEvent(com.google.gwt.view.client.CellPreviewEvent) Response(com.google.gwt.http.client.Response) VerticalPanel(com.google.gwt.user.client.ui.VerticalPanel) Timer(com.google.gwt.user.client.Timer) RequestCallback(com.google.gwt.http.client.RequestCallback) Command(com.google.gwt.user.client.Command) RefreshSchedulesCommand(org.pentaho.mantle.client.commands.RefreshSchedulesCommand) DateTimeFormat(com.google.gwt.i18n.client.DateTimeFormat)

Aggregations

IDialogCallback (org.pentaho.gwt.widgets.client.dialogs.IDialogCallback)21 PromptDialogBox (org.pentaho.gwt.widgets.client.dialogs.PromptDialogBox)11 MessageDialogBox (org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox)9 Request (com.google.gwt.http.client.Request)8 RequestBuilder (com.google.gwt.http.client.RequestBuilder)8 RequestCallback (com.google.gwt.http.client.RequestCallback)8 RequestException (com.google.gwt.http.client.RequestException)8 Response (com.google.gwt.http.client.Response)8 Label (com.google.gwt.user.client.ui.Label)7 VerticalPanel (com.google.gwt.user.client.ui.VerticalPanel)7 HTML (com.google.gwt.user.client.ui.HTML)6 TextBox (com.google.gwt.user.client.ui.TextBox)3 IFrameTabPanel (org.pentaho.mantle.client.solutionbrowser.tabs.IFrameTabPanel)3 JSONString (com.google.gwt.json.client.JSONString)2 Command (com.google.gwt.user.client.Command)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 List (java.util.List)2 OverwritePromptDialog (org.pentaho.mantle.client.dialogs.OverwritePromptDialog)2 SolutionBrowserFile (org.pentaho.mantle.client.solutionbrowser.SolutionBrowserFile)2