List of usage examples for com.google.gwt.user.client.ui FileUpload getFilename
public String getFilename()
From source file:org.mobicents.slee.container.management.console.client.deployableunits.DeployableUnitInstallPanel.java
License:Open Source License
public DeployableUnitInstallPanel(BrowseContainer browseContainer) { super();/*from w w w . j a va2 s.c om*/ setAction("DeployableUnitsInstallService"); setEncoding(FormPanel.ENCODING_MULTIPART); setMethod(FormPanel.METHOD_POST); ControlContainer panel = new ControlContainer(); panel.setWidth(""); setWidget(panel); Label label = new Label("Package file:"); final FileUpload fileUpload = new FileUpload(); fileUpload.setName("uploadFormElement"); final Button submit = new Button("Install", new ClickListener() { public void onClick(Widget sender) { submit(); } }); addFormHandler(new FormHandler() { public void onSubmitComplete(final FormSubmitCompleteEvent event) { String result = event.getResults(); if (result == null || result.length() == 0) { return; } result = extractMessage(result); if (result.indexOf(DeployableUnitsService.SUCCESS_CODE) != -1) { Logger.info("Deployable unit installed"); } else { Logger.error(result); } } public void onSubmit(FormSubmitEvent event) { if (fileUpload.getFilename().trim().length() == 0) { Logger.error("Please specify a package file"); event.setCancelled(true); } } }); panel.setWidget(0, 0, label); panel.setWidget(0, 1, fileUpload); panel.setWidget(0, 2, submit); browseContainer.add("Install a deployable unit", this); }
From source file:org.ow2.proactive_grid_cloud_portal.common.client.CredentialsWindow.java
License:Open Source License
private void build() { /* smartGWT forms don't allow simple multipart file upload, * so we use a smartGWT form for login/password/checkbox, * a pure GWT form for file upload, and upon submission, * put the fields from the first form as hidden fields of the * pure GWT form. It's a bit convoluted but like this we get * the pretty widgets and the nice features */ TextItem loginField = new TextItem("login", "Login"); loginField.setRequired(true);// w ww . j ava2s .co m PasswordItem passwordField = new PasswordItem("password", "Password"); passwordField.setRequired(true); final CheckboxItem moreField = new CheckboxItem("useSSH", "Use SSH private key"); moreField.setValue(false); // smartGWT form: only used to input the data before filling the hidden fields // in the other form with it final DynamicForm form = new DynamicForm(); form.setFields(loginField, passwordField, moreField); // pure GWT form for uploading, will be used to contact the servlet // even if no ssh key is used final FileUpload fileUpload = new FileUpload(); fileUpload.setName("sshkey"); final Hidden hiddenUser = new Hidden("username"); final Hidden hiddenPass = new Hidden("password"); final FormPanel formPanel = new FormPanel(); formPanel.setEncoding(FormPanel.ENCODING_MULTIPART); formPanel.setMethod(FormPanel.METHOD_POST); formPanel.setAction(GWT.getModuleBaseURL() + "createcredential"); final VerticalPanel vpan = new VerticalPanel(); vpan.add(hiddenUser); vpan.add(hiddenPass); vpan.add(fileUpload); formPanel.setWidget(vpan); formPanel.setWidth("100%"); formPanel.setHeight("30px"); final HLayout formWrapper = new HLayout(); formWrapper.setAlign(Alignment.CENTER); formWrapper.addChild(formPanel); formWrapper.setWidth100(); formWrapper.addDrawHandler(new DrawHandler() { public void onDraw(DrawEvent event) { // took me half a day to find this hack: // if the form is added to the page in a hidden element, // it is never created and submission fails without callback. // it needs to be visible so that it is created once, then // we can safely hide it and still use it if (disableFormWrapper) { disableFormWrapper = false; formWrapper.setVisible(false); } } }); // hide/show the ssh key upload input moreField.addChangedHandler(new ChangedHandler() { public void onChanged(ChangedEvent event) { if (moreField.getValueAsBoolean()) { formWrapper.setVisible(true); } else { formWrapper.setVisible(false); formPanel.reset(); } } }); // prevent form validation if no ssh key is selected Validator moreVal = new CustomValidator() { @Override protected boolean condition(Object value) { if (moreField.getValueAsBoolean()) { String file = fileUpload.getFilename(); return (file != null && file.length() > 0); } else { return true; } } }; moreVal.setErrorMessage("No file selected"); moreField.setValidators(moreVal); final IButton clearButton = new IButton("Clear"); clearButton.setIcon(Images.instance.clear_16().getSafeUri().asString()); clearButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { form.clearValues(); formPanel.reset(); formWrapper.setVisible(false); } }); final IButton closeButton = new IButton("Close"); final Label label = new Label("A Credential is a file containing all information used" + " for authentication, in an encrypted form. It allows easier authentication and" + " automation."); label.setHeight(50); final HLayout buttonBar = new HLayout(); final IButton okButton = new IButton(); okButton.setShowDisabled(false); okButton.setIcon(Images.instance.ok_16().getSafeUri().asString()); okButton.setTitle("Create"); okButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { if (!form.validate()) return; String login = form.getValueAsString("login"); String pw = form.getValueAsString("password"); hiddenUser.setValue(login); hiddenPass.setValue(pw); formPanel.submit(); } }); closeButton.setIcon(Images.instance.cancel_16().getSafeUri().asString()); closeButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { CredentialsWindow.this.window.hide(); CredentialsWindow.this.destroy(); } }); formPanel.addSubmitCompleteHandler(new SubmitCompleteHandler() { public void onSubmitComplete(SubmitCompleteEvent event) { /* this happens only on error, if the call succeeds, * the response is relocated so that a 'save file' dialog appears */ String str = event.getResults(); label.setContents("<span style='color:red;'>" + str + "</span>"); } }); Layout formLayout = new VLayout(); formLayout.setHeight100(); formLayout.setWidth100(); formLayout.setMembersMargin(10); formLayout.addMember(form); formLayout.addMember(formWrapper); buttonBar.setWidth100(); buttonBar.setAlign(Alignment.RIGHT); buttonBar.setMembersMargin(5); buttonBar.setMembers(clearButton, okButton, closeButton); formLayout.addMember(buttonBar); VLayout layout = new VLayout(); layout.setMembersMargin(10); layout.setMargin(5); layout.setMembers(label, formLayout, buttonBar); this.window = new Window(); this.window.setTitle("Create Credentials"); this.window.setShowMinimizeButton(false); this.window.setIsModal(true); this.window.setShowModalMask(true); this.window.addItem(layout); this.window.setWidth(370); this.window.setHeight(260); this.window.centerInPage(); }
From source file:org.ow2.proactive_grid_cloud_portal.common.client.LoginPage.java
License:Open Source License
/** * @return the forms and widgets for plain login/password authentication *///from w w w .ja va2 s. com private Layout getPlainAuth() { /* smartGWT forms don't allow simple multipart file upload, * so we use a smartGWT form for login/password/checkbox, * a pure GWT form for file upload, and upon submission, * put the fields from the first form as hidden fields of the * pure GWT form. It's a bit convoluted but like this we get * the pretty widgets and the nice features */ TextItem loginField = new TextItem("login", "User"); loginField.setRequired(true); PasswordItem passwordField = new PasswordItem("password", "Password"); passwordField.setRequired(true); final CheckboxItem moreField = new CheckboxItem("useSSH", "Use SSH private key"); moreField.setValue(false); // smartGWT form: only used to input the data before filling the hidden fields // in the other form with it final DynamicForm form = new DynamicForm(); form.setFields(loginField, passwordField, moreField); form.hideItem("useSSH"); // pure GWT form for uploading, will be used to contact the servlet // even if no ssh key is used final FileUpload fileUpload = new FileUpload(); fileUpload.setName("sshkey"); final Hidden hiddenUser = new Hidden("username"); final Hidden hiddenPass = new Hidden("password"); final FormPanel formPanel = new FormPanel(); formPanel.setEncoding(FormPanel.ENCODING_MULTIPART); formPanel.setMethod(FormPanel.METHOD_POST); formPanel.setAction(GWT.getModuleBaseURL() + "login"); final VerticalPanel vpan = new VerticalPanel(); vpan.add(hiddenUser); vpan.add(hiddenPass); vpan.add(fileUpload); formPanel.setWidget(vpan); formPanel.setWidth("100%"); formPanel.setHeight("30px"); final HLayout formWrapper = new HLayout(); formWrapper.setAlign(Alignment.CENTER); formWrapper.addChild(formPanel); formWrapper.setWidth100(); formWrapper.addDrawHandler(new DrawHandler() { public void onDraw(DrawEvent event) { // took me half a day to find this hack: // if the form is added to the page in a hidden element, // it is never created and submission fails without callback. // it needs to be visible so that it is created once, then // we can safely hide it and still use it if (disableFormWrapper) { disableFormWrapper = false; formWrapper.setVisible(false); } } }); // hide/show the ssh key upload input moreField.addChangedHandler(new ChangedHandler() { public void onChanged(ChangedEvent event) { if (moreField.getValueAsBoolean()) { //formWrapper.setVisible(true); formWrapper.animateShow(AnimationEffect.FLY); } else { //formWrapper.setVisible(false); formWrapper.animateHide(AnimationEffect.FLY); formPanel.reset(); } } }); // prevent form validation if no ssh key is selected Validator moreVal = new CustomValidator() { @Override protected boolean condition(Object value) { if (moreField.getValueAsBoolean()) { String file = fileUpload.getFilename(); return (file != null && file.length() > 0); } else { return true; } } }; moreVal.setErrorMessage("No file selected"); moreField.setValidators(moreVal); final Runnable advancedVisibilityChanged = new Runnable() { @Override public void run() { if (!moreField.getVisible()) { authSelLayout.setVisible(true); form.showItem("useSSH"); optsLabel.setIcon(Images.instance.close_16().getSafeUri().asString()); optsLabel.setContents( "<nobr style='color:#003168;font-size: 1.2em;" + "cursor:pointer'>less options</nobr>"); } else { authTypeSelectForm.setValue("Mode", "Basic"); switchPlainCredForm.run(); authSelLayout.setVisible(false); form.hideItem("useSSH"); formWrapper.animateHide(AnimationEffect.FLY); moreField.setValue(false); formPanel.reset(); optsLabel.setIcon(Images.instance.expand_16().getSafeUri().asString()); optsLabel.setContents( "<nobr style='color:#003168;font-size: 1.2em;" + "cursor:pointer'>more options</nobr>"); } } }; optsLabel.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { advancedVisibilityChanged.run(); } }); String cacheLogin = Settings.get().getSetting(controller.getLoginSettingKey()); if (cacheLogin != null) { form.setValue("login", cacheLogin); } final IButton okButton = new IButton(); okButton.setShowDisabled(false); okButton.setIcon(Images.instance.connect_16().getSafeUri().asString()); okButton.setTitle("Connect"); okButton.setWidth(120); okButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { if (!form.validate()) return; String login = form.getValueAsString("login"); String pw = form.getValueAsString("password"); hiddenUser.setValue(login); hiddenPass.setValue(pw); okButton.setIcon("loading.gif"); okButton.setTitle("Connecting..."); form.disable(); formWrapper.disable(); authTypeSelectForm.disable(); okButton.disable(); // only submit once the the error message is hidden so we don't try to show it (on form response) // while the effect is played resulting in the message hidden staying hidden if (errorLabel.isDrawn() && errorLabel.isVisible()) { errorLabel.animateHide(AnimationEffect.FLY, new AnimationCallback() { @Override public void execute(boolean earlyFinish) { formPanel.submit(); } }); } else { formPanel.submit(); } } }); formPanel.addSubmitCompleteHandler(new SubmitCompleteHandler() { public void onSubmitComplete(SubmitCompleteEvent event) { String res = new HTML(event.getResults()).getText(); boolean fail = false; try { JSONValue val = controller.parseJSON(res); JSONObject obj = val.isObject(); if (obj != null && obj.containsKey("sessionId")) { String sess = obj.isObject().get("sessionId").isString().stringValue(); controller.login(sess, form.getValueAsString("login")); } else { fail = true; } } catch (Throwable t) { fail = true; } if (fail) { String err = JSONUtils.getJsonErrorMessage(res); int sta = JSONUtils.getJsonErrorCode(res); if (sta != -1) err += " (" + sta + ")"; errorLabel.setContents("<span style='color:red;'>Could not login: " + err + "</span>"); errorLabel.animateShow(AnimationEffect.FLY); okButton.setIcon(Images.instance.connect_16().getSafeUri().asString()); okButton.setTitle("Connect"); formWrapper.enable(); form.enable(); authTypeSelectForm.enable(); okButton.enable(); } } }); form.addItemKeyPressHandler(new ItemKeyPressHandler() { public void onItemKeyPress(ItemKeyPressEvent event) { if ("Enter".equals(event.getKeyName())) { okButton.fireEvent(new ClickEvent(null)); } } }); Layout formLayout = new VLayout(); formLayout.setWidth100(); formLayout.setMembersMargin(10); formLayout.addMember(form); formLayout.addMember(formWrapper); HLayout buttonBar = new HLayout(); buttonBar.setWidth100(); buttonBar.setAlign(Alignment.CENTER); buttonBar.addMember(okButton); formLayout.addMember(buttonBar); return formLayout; }
From source file:org.ow2.proactive_grid_cloud_portal.rm.client.nodesource.serialization.ImportFromFilePanel.java
License:Open Source License
private FileUpload getFileUploadItem() { FileUpload fileUpload = new FileUpload(); fileUpload.setName(FILE_OPTION_NAME); fileUpload.addChangeHandler(onFileChosen -> { if (!fileUpload.getFilename().isEmpty()) { submit();/* w w w .j a v a 2 s. co m*/ } }); return fileUpload; }
From source file:org.ow2.proactive_grid_cloud_portal.scheduler.client.SubmitWindow.java
License:Open Source License
/** * internal layout creation//from w w w .j a va2s .com * * <pre> * +- Window ------------------+ * |+- VLayout ---------------+| * ||+- Label --------+ || <-- error messages * ||+----------------+ || when applicable * ||+- Layout --------------+|| * |||+- FormPanel ---------+||| * ||||+- VerticalPanel ---+|||| * ||||| form fields ||||| <-- GWT form wrapped * ||||+-------------------+|||| in SmartGWT layout * |||+---------------------+||| * ||+-----------------------+|| * ||+- DynamicForm ---------+|| SmartGWT form, check * ||| form fields ||| <-- to enable variable edition * ||+-----------------------+|| * || +- IButton --+|| <-- submit button * || +------------+|| * |+-------------------------+| * +---------------------------+ * </pre> * * If the <code>Edit variables</code> checkbox is checked, * the {@link UploadServlet} called by the GWT form will return the content * of the job descriptor, and we will create a new form to edit the * variables so that we may submit the job to a second servlet, {@link SubmitEditServlet}. * If the {@link SubmitEditServlet} submission fails, we get back in the same state * as before the first click to Submit * * */ private void build() { /* mixing GWT's native FormPanel with SmartGWT containers, * because SmartGWT's form somehow sucks when not using the datasource stuff * as a result the layout is a bit messy */ // root page of the window final VLayout layout = new VLayout(); layout.setMargin(10); layout.setWidth100(); layout.setHeight100(); // buttons final HLayout buttons = new HLayout(); buttons.setMembersMargin(5); buttons.setHeight(20); buttons.setWidth100(); buttons.setAlign(Alignment.RIGHT); final IButton uploadButton = new IButton("Submit"); uploadButton.setIcon(Images.instance.ok_16().getSafeUri().asString()); final IButton cancelButton = new IButton("Cancel"); cancelButton.setIcon(Images.instance.cancel_16().getSafeUri().asString()); cancelButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { SubmitWindow.this.window.hide(); SubmitWindow.this.destroy(); } }); buttons.setMembers(uploadButton, cancelButton); // holds the form fields VerticalPanel formContent = new VerticalPanel(); Hidden hiddenField = new Hidden(); hiddenField.setName("sessionId"); hiddenField.setValue(LoginModel.getInstance().getSessionId()); formContent.add(hiddenField); final FileUpload fileUpload = new FileUpload(); fileUpload.setName("job"); final Hidden editField = new Hidden("edit"); editField.setValue("0"); formContent.add(fileUpload); formContent.add(editField); // actual form final FormPanel formPanel = new FormPanel(); formPanel.setEncoding(FormPanel.ENCODING_MULTIPART); formPanel.setMethod(FormPanel.METHOD_POST); formPanel.setAction(GWT.getModuleBaseURL() + "uploader"); formPanel.add(formContent); formPanel.setWidth("350px"); formPanel.setHeight("30px"); // wraps the GWT component so that we may show/hide it final HLayout formWrapper = new HLayout(); formWrapper.setAlign(Alignment.CENTER); formWrapper.setHeight(30); formWrapper.addChild(formPanel); // error messages when applicable final Label label = new Label("Submit an XML Job Descriptor:"); label.setHeight(30); label.setWidth100(); // shown during submission final Label waitLabel = new Label("Please wait..."); waitLabel.setHeight(30); waitLabel.setIcon("loading.gif"); waitLabel.setWidth100(); waitLabel.setAlign(Alignment.CENTER); final CheckboxItem edit = new CheckboxItem("edit", "Edit variables definitions"); final DynamicForm editForm = new DynamicForm(); editForm.setHeight100(); editForm.setColWidths(20, "*"); editForm.setFields(edit); layout.addMember(label); layout.addMember(formWrapper); layout.addMember(editForm); layout.addMember(buttons); this.window = new Window(); this.window.setTitle("Submit Job"); this.window.setShowMinimizeButton(false); this.window.setIsModal(true); this.window.setShowModalMask(true); this.window.addItem(layout); this.window.setWidth(420); this.window.setHeight(180); this.window.centerInPage(); this.window.setCanDragResize(true); // click the upload button : // hide the form, show a 'please wait' label, // wait for the form's callback uploadButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() { public void onClick(ClickEvent e) { editField.setValue(edit.getValueAsBoolean() ? "1" : "0"); formPanel.submit(); layout.removeMember(label); layout.removeMember(formWrapper); layout.removeMember(editForm); layout.removeMember(buttons); layout.addMember(waitLabel); } }); // form callback : silently close the window if no error, // else display message and allow new submission formPanel.addSubmitCompleteHandler(new SubmitCompleteHandler() { public void onSubmitComplete(SubmitCompleteEvent event) { String fn = fileUpload.getFilename(); // chrome workaround final String fileName = fn.replace("C:\\fakepath\\", ""); String res = event.getResults(); boolean isError = false; try { JSONValue js = JSONParser.parseStrict(res); JSONObject obj = js.isObject(); /* * submission with no edition successful, result is the job id */ if (obj.get("id") != null && obj.get("id").isNumber() != null) { int id = (int) obj.get("id").isNumber().doubleValue(); SubmitWindow.this.destroy(); LogModel.getInstance().logMessage("Successfully submitted job " + fileName + ": " + id); controller.getExecutionController().getJobsController().addSubmittingJob(id, fileName); } /* * submission with edition: */ else if (obj.get("jobEdit") != null && obj.get("jobEdit").isString() != null) { String val = obj.get("jobEdit").isString().stringValue(); String job = new String( org.ow2.proactive_grid_cloud_portal.common.shared.Base64Utils.fromBase64(val)); final Map<String, String> variables = readVars(job); // presentation form final DynamicForm varForm = new DynamicForm(); final FormItem[] fields = new FormItem[variables.size()]; final Hidden[] _fields = new Hidden[variables.size()]; int i = 0; final VerticalPanel hiddenPane = new VerticalPanel(); for (Entry<String, String> var : variables.entrySet()) { TextItem t = new TextItem(var.getKey(), var.getKey()); t.setValue(var.getValue()); t.setWidth(240); _fields[i] = new Hidden("var_" + var.getKey()); hiddenPane.add(_fields[i]); fields[i] = t; i++; } varForm.setFields(fields); varForm.setWidth100(); varForm.setHeight100(); // actual form used to POST final FormPanel fpanel = new FormPanel(); fpanel.setMethod(FormPanel.METHOD_POST); fpanel.setAction(GWT.getModuleBaseURL() + "submitedit"); hiddenPane.add(new Hidden("job", job)); hiddenPane.add(new Hidden("sessionId", LoginModel.getInstance().getSessionId())); fpanel.setWidget(hiddenPane); final Layout fpanelWrapper = new Layout(); fpanelWrapper.addMember(fpanel); label.setContents( "Edit the variable definitions for job <strong>" + fileName + "</strong>"); final HLayout buttons2 = new HLayout(); buttons2.setWidth100(); buttons2.setHeight(20); buttons2.setAlign(Alignment.RIGHT); buttons2.setMembersMargin(5); final IButton reset = new IButton("Reset"); reset.setIcon(Images.instance.clear_16().getSafeUri().asString()); reset.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { for (FormItem it : fields) { String key = it.getName(); String val = variables.get(key); it.setValue(val); } } }); final IButton submit2 = new IButton("Submit"); submit2.setIcon(Images.instance.ok_16().getSafeUri().asString()); submit2.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { for (int i = 0; i < fields.length; i++) { String val = ""; if (fields[i].getValue() != null) { val = fields[i].getValue().toString(); } _fields[i].setValue(val); } fpanel.submit(); layout.removeMember(label); layout.removeMember(varForm); layout.removeMember(buttons2); layout.removeMember(fpanelWrapper); layout.addMember(waitLabel); layout.reflow(); } }); final IButton cancel2 = new IButton("Cancel"); cancel2.setIcon(Images.instance.cancel_16().getSafeUri().asString()); cancel2.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { SubmitWindow.this.window.hide(); SubmitWindow.this.destroy(); } }); buttons2.setMembers(reset, submit2, cancel2); fpanel.addSubmitCompleteHandler(new SubmitCompleteHandler() { public void onSubmitComplete(SubmitCompleteEvent event) { String res = event.getResults(); boolean failure = false; try { JSONValue val = controller.parseJSON(res); if (val.isObject() != null && val.isObject().containsKey("id")) { int id = (int) val.isObject().get("id").isNumber().doubleValue(); SubmitWindow.this.destroy(); LogModel.getInstance() .logMessage("Successfully submitted job " + fileName + ": " + id); controller.getExecutionController().getJobsController().addSubmittingJob(id, fileName); } else { failure = true; } } catch (JSONException e) { failure = true; } if (failure) { String msg = JSONUtils.getJsonErrorMessage(res); layout.removeMember(waitLabel); label.setContents( "<span style='color:red; font-weight:bold'>Job submission failed:</span><br>" + "<span style=''>" + msg + "</span>"); layout.addMember(label); layout.addMember(formWrapper); layout.addMember(editForm); layout.addMember(buttons); layout.reflow(); LogModel.getInstance().logImportantMessage("Failed to submit job: " + msg); } } }); layout.removeMember(waitLabel); layout.addMember(label); layout.addMember(varForm); layout.addMember(fpanelWrapper); layout.addMember(buttons2); layout.setMargin(10); layout.reflow(); } else { isError = true; } } catch (JSONException t) { isError = true; } /* * submission failure */ if (isError) { String msg = JSONUtils.getJsonErrorMessage(res); layout.removeMember(waitLabel); label.setContents("<span style='color:red; font-weight:bold'>Job submission failed:</span><br>" + "<span style=''>" + msg + "</span>"); layout.addMember(label); layout.addMember(formWrapper); layout.addMember(editForm); layout.addMember(buttons); layout.reflow(); LogModel.getInstance().logImportantMessage("Failed to submit job: " + msg); } } }); }
From source file:org.pentaho.mantle.client.dialogs.ImportDialog.java
License:Open Source License
/** * @param repositoryFile/*from w ww. j av a 2 s.c o m*/ */ public ImportDialog(RepositoryFile repositoryFile, boolean allowAdvancedDialog) { super(Messages.getString("import"), Messages.getString("ok"), Messages.getString("cancel"), false, true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ form = new FormPanel(); form.addSubmitHandler(new SubmitHandler() { @Override public void onSubmit(SubmitEvent se) { // if no file is selected then do not proceed okButton.setEnabled(false); cancelButton.setEnabled(false); MantleApplication.showBusyIndicator(Messages.getString("pleaseWait"), Messages.getString("importInProgress")); } }); form.addSubmitCompleteHandler(new SubmitCompleteHandler() { @Override public void onSubmitComplete(SubmitCompleteEvent sce) { MantleApplication.hideBusyIndicator(); okButton.setEnabled(false); cancelButton.setEnabled(true); ImportDialog.this.hide(); String result = sce.getResults(); if (result.length() > 5) { HTML messageTextBox = null; if (result.contains("INVALID_MIME_TYPE") == true) { messageTextBox = new HTML(Messages.getString("uploadInvalidFileTypeQuestion", result)); } else { logWindow(result, Messages.getString("importLogWindowTitle")); } if (messageTextBox != null) { PromptDialogBox dialogBox = new PromptDialogBox(Messages.getString("uploadUnsuccessful"), Messages.getString("close"), null, true, true); dialogBox.setContent(messageTextBox); dialogBox.center(); } } // if mantle_isBrowseRepoDirty=true: do getChildren call // if mantle_isBrowseRepoDirty=false: use stored fileBrowserModel in myself.get("cachedData") setBrowseRepoDirty(Boolean.TRUE); // BISERVER-9319 Refresh browse perspective after import final GenericEvent event = new GenericEvent(); event.setEventSubType("ImportDialogEvent"); EventBusUtil.EVENT_BUS.fireEvent(event); } }); VerticalPanel rootPanel = new VerticalPanel(); VerticalPanel spacer = new VerticalPanel(); spacer.setHeight("10px"); rootPanel.add(spacer); Label fileLabel = new Label(Messages.getString("file") + ":"); final TextBox importDir = new TextBox(); rootPanel.add(fileLabel); okButton.setEnabled(false); final TextBox fileTextBox = new TextBox(); fileTextBox.setEnabled(false); //We use an fileNameOverride because FileUpload can only handle US character set reliably. final Hidden fileNameOverride = new Hidden("fileNameOverride"); final FileUpload upload = new FileUpload(); upload.setName("fileUpload"); ChangeHandler fileUploadHandler = new ChangeHandler() { @Override public void onChange(ChangeEvent event) { fileTextBox.setText(upload.getFilename()); if (!"".equals(importDir.getValue())) { //Set the fileNameOverride because the fileUpload object can only reliably transmit US-ASCII //character set. See RFC283 section 2.3 for details String fileNameValue = upload.getFilename().replaceAll("\\\\", "/"); fileNameValue = fileNameValue.substring(fileNameValue.lastIndexOf("/") + 1); fileNameOverride.setValue(fileNameValue); okButton.setEnabled(true); } else { okButton.setEnabled(false); } } }; upload.addChangeHandler(fileUploadHandler); upload.setVisible(false); HorizontalPanel fileUploadPanel = new HorizontalPanel(); fileUploadPanel.add(fileTextBox); fileUploadPanel.add(new HTML(" ")); Button browseButton = new Button(Messages.getString("browse") + "..."); browseButton.setStyleName("pentaho-button"); fileUploadPanel.add(browseButton); browseButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { setRetainOwnershipState(); jsClickUpload(upload.getElement()); } }); rootPanel.add(fileUploadPanel); rootPanel.add(upload); applyAclPermissions.setName("applyAclPermissions"); applyAclPermissions.setValue(Boolean.FALSE); applyAclPermissions.setFormValue("false"); applyAclPermissions.setEnabled(true); applyAclPermissions.setVisible(false); final CheckBox overwriteAclPermissions = new CheckBox(Messages.getString("overwriteAclPermissions"), true); overwriteAclPermissions.setName("overwriteAclPermissions"); applyAclPermissions.setValue(Boolean.FALSE); applyAclPermissions.setFormValue("false"); overwriteAclPermissions.setEnabled(true); overwriteAclPermissions.setVisible(false); final Hidden overwriteFile = new Hidden("overwriteFile"); overwriteFile.setValue("true"); final Hidden logLevel = new Hidden("logLevel"); logLevel.setValue("ERROR"); final Hidden retainOwnership = new Hidden("retainOwnership"); retainOwnership.setValue("true"); rootPanel.add(applyAclPermissions); rootPanel.add(overwriteAclPermissions); rootPanel.add(overwriteFile); rootPanel.add(logLevel); rootPanel.add(retainOwnership); rootPanel.add(fileNameOverride); spacer = new VerticalPanel(); spacer.setHeight("4px"); rootPanel.add(spacer); DisclosurePanel disclosurePanel = new DisclosurePanel(Messages.getString("advancedOptions")); disclosurePanel.getHeader().setStyleName("gwt-Label"); disclosurePanel.setVisible(allowAdvancedDialog); HorizontalPanel mainPanel = new HorizontalPanel(); mainPanel.add(new HTML(" ")); VerticalPanel disclosureContent = new VerticalPanel(); HTML replaceLabel = new HTML(Messages.getString("fileExists")); replaceLabel.setStyleName("gwt-Label"); disclosureContent.add(replaceLabel); final CustomListBox overwriteFileDropDown = new CustomListBox(); final CustomListBox filePermissionsDropDown = new CustomListBox(); DefaultListItem replaceListItem = new DefaultListItem(Messages.getString("replaceFile")); replaceListItem.setValue("true"); overwriteFileDropDown.addItem(replaceListItem); DefaultListItem doNotImportListItem = new DefaultListItem(Messages.getString("doNotImport")); doNotImportListItem.setValue("false"); overwriteFileDropDown.addItem(doNotImportListItem); overwriteFileDropDown.setVisibleRowCount(1); disclosureContent.add(overwriteFileDropDown); spacer = new VerticalPanel(); spacer.setHeight("4px"); disclosureContent.add(spacer); HTML filePermissionsLabel = new HTML(Messages.getString("filePermissions")); filePermissionsLabel.setStyleName("gwt-Label"); disclosureContent.add(filePermissionsLabel); DefaultListItem usePermissionsListItem = new DefaultListItem(Messages.getString("usePermissions")); usePermissionsListItem.setValue("false"); filePermissionsDropDown.addItem(usePermissionsListItem); // If selected set "overwriteAclPermissions" to // false. DefaultListItem retainPermissionsListItem = new DefaultListItem(Messages.getString("retainPermissions")); retainPermissionsListItem.setValue("true"); filePermissionsDropDown.addItem(retainPermissionsListItem); // If selected set "overwriteAclPermissions" to // true. final ChangeListener filePermissionsHandler = new ChangeListener() { @Override public void onChange(Widget sender) { String value = filePermissionsDropDown.getSelectedItem().getValue().toString(); applyAclPermissions.setValue(Boolean.valueOf(value)); applyAclPermissions.setFormValue(value); overwriteAclPermissions.setFormValue(value); overwriteAclPermissions.setValue(Boolean.valueOf(value)); setRetainOwnershipState(); } }; filePermissionsDropDown.addChangeListener(filePermissionsHandler); filePermissionsDropDown.setVisibleRowCount(1); disclosureContent.add(filePermissionsDropDown); spacer = new VerticalPanel(); spacer.setHeight("4px"); disclosureContent.add(spacer); HTML fileOwnershipLabel = new HTML(Messages.getString("fileOwnership")); fileOwnershipLabel.setStyleName("gwt-Label"); disclosureContent.add(fileOwnershipLabel); retainOwnershipDropDown.addChangeListener(new ChangeListener() { @Override public void onChange(Widget sender) { String value = retainOwnershipDropDown.getSelectedItem().getValue().toString(); retainOwnership.setValue(value); } }); DefaultListItem keepOwnershipListItem = new DefaultListItem(Messages.getString("keepOwnership")); keepOwnershipListItem.setValue("true"); retainOwnershipDropDown.addItem(keepOwnershipListItem); DefaultListItem assignOwnershipListItem = new DefaultListItem(Messages.getString("assignOwnership")); assignOwnershipListItem.setValue("false"); retainOwnershipDropDown.addItem(assignOwnershipListItem); retainOwnershipDropDown.setVisibleRowCount(1); disclosureContent.add(retainOwnershipDropDown); spacer = new VerticalPanel(); spacer.setHeight("4px"); disclosureContent.add(spacer); ChangeListener overwriteFileHandler = new ChangeListener() { @Override public void onChange(Widget sender) { String value = overwriteFileDropDown.getSelectedItem().getValue().toString(); overwriteFile.setValue(value); } }; overwriteFileDropDown.addChangeListener(overwriteFileHandler); HTML loggingLabel = new HTML(Messages.getString("logging")); loggingLabel.setStyleName("gwt-Label"); disclosureContent.add(loggingLabel); final CustomListBox loggingDropDown = new CustomListBox(); loggingDropDown.addChangeListener(new ChangeListener() { public void onChange(Widget sender) { String value = loggingDropDown.getSelectedItem().getValue().toString(); logLevel.setValue(value); } }); DefaultListItem noneListItem = new DefaultListItem(Messages.getString("none")); noneListItem.setValue("ERROR"); loggingDropDown.addItem(noneListItem); DefaultListItem shortListItem = new DefaultListItem(Messages.getString("short")); shortListItem.setValue("WARN"); loggingDropDown.addItem(shortListItem); DefaultListItem debugListItem = new DefaultListItem(Messages.getString("verbose")); debugListItem.setValue("TRACE"); loggingDropDown.addItem(debugListItem); loggingDropDown.setVisibleRowCount(1); disclosureContent.add(loggingDropDown); mainPanel.add(disclosureContent); disclosurePanel.setContent(mainPanel); rootPanel.add(disclosurePanel); importDir.setName("importDir"); importDir.setText(repositoryFile.getPath()); importDir.setVisible(false); rootPanel.add(importDir); form.setEncoding(FormPanel.ENCODING_MULTIPART); form.setMethod(FormPanel.METHOD_POST); setFormAction(); form.add(rootPanel); setContent(form); }