public EditorController(String divID, int width, int height) { VerticalPanel vp = new VerticalPanel(); HorizontalPanel hp = new HorizontalPanel(); SimplePanel topToolBoxWrapper = new SimplePanel(); ToggleButtonListener toggleButtonListener = new ToggleButtonListener(); topToolBox = new TopToolBox(this, toggleButtonListener); topToolBox.setStyleName("jsmoleditor-topToolBox"); topToolBoxWrapper.setWidget(topToolBox); topToolBoxWrapper.setStyleName("jsmoleditor-topTooBoxWrapper"); topToolBoxWrapper.setWidth(width + "px"); SimplePanel sideToolBoxWrapper = new SimplePanel(); elementToolBox = new ElementToolBox(this, toggleButtonListener); sideToolBoxWrapper.setWidget(elementToolBox); sideToolBoxWrapper.setStyleName("jsmoleditor-elementToolBoxWrapper"); sideToolBoxWrapper.setHeight((height - 24) + "px"); VerticalPanel vp2 = new VerticalPanel(); ExtendedCanvas canvas = new ExtendedCanvas(width - 24, height - 48); StatusBar statusBar = new StatusBar(width - 24, 24); statusBar.setHTML("Copyright chemhack.com"); renderer = new CanvasRenderer(this, canvas); vp2.add(canvas); vp2.add(statusBar); hp.add(sideToolBoxWrapper); hp.add(vp2); vp.add(topToolBoxWrapper); vp.add(hp); RootPanel rootPanel = RootPanel.get(divID); rootPanel.setPixelSize(width, height); rootPanel.add(vp); KeyboardShortCutEventPreview preview = new KeyboardShortCutEventPreview(this); // TODO deal with multiple editor instance? DOM.addEventPreview(preview); EditorMouseListener listener = new EditorMouseListener(this); canvas.addMouseListener(listener); canvas.addMouseWheelListener(listener); }
/** Rebuild already added widget based on already added admins */ private void rebuildAlreadyAddedWidget() { alreadyAdded.setStyleName("alreadyAdded"); alreadyAdded.setVisible(!alreadyAddedList.isEmpty()); alreadyAdded.setWidget(new HTML("<strong>Already added: </strong>")); for (int i = 0; i < alreadyAddedList.size(); i++) { alreadyAdded .getWidget() .getElement() .setInnerHTML( alreadyAdded.getWidget().getElement().getInnerHTML() + ((i != 0) ? ", " : "") + alreadyAddedList.get(i).getFullName()); } }
/** * Prepares the widgets from the items as A DISPLAY FOR THE USER DEPRECATED: Use * GetFormItemsWithPrefilledValues instead * * @param items * @deprecated */ public void prepareApplicationForm(final ArrayList<ApplicationFormItem> items) { FlexTable ft = new FlexTable(); FlexCellFormatter fcf = ft.getFlexCellFormatter(); String locale = "en"; if (LocaleInfo.getCurrentLocale().getLocaleName().equals("default")) { locale = "en"; } else { locale = "cs"; } int i = 0; for (final ApplicationFormItem item : items) { String value = ""; if (item.getShortname().equals("affiliation") || item.getShortname().equals("mail") || item.getShortname().equals("displayName")) { value = "from federation"; } RegistrarFormItemGenerator gen = new RegistrarFormItemGenerator(item, value, locale); this.applFormGenerators.add(gen); if (!gen.isVisible()) { continue; } ItemTexts itemTexts = item.getItemTexts(locale); // WITH LABEL (input box ...) if (gen.isLabelShown()) { // 0 = label ft.setHTML(i, 0, "<strong>" + gen.getLabelOrShortname() + "</strong>"); // 1 = widget Widget w = gen.getWidget(); w.setTitle(itemTexts.getHelp()); ft.setWidget(i, 1, w); // ELSE HTML COMMENT } else { ft.setWidget(i, 0, gen.getWidget()); // colspan = 2 fcf.setColSpan(i, 0, 2); } // format fcf.setHeight(i, 0, "35px"); fcf.setVerticalAlignment(i, 0, HasVerticalAlignment.ALIGN_TOP); fcf.setVerticalAlignment(i, 1, HasVerticalAlignment.ALIGN_MIDDLE); i++; } contents.setWidget(ft); }
/** * Prepares the widgets from the items as A FORM FOR SETTINGS * * @param items */ public void prepareSettings(final ArrayList<ApplicationFormItem> items) { // refresh table events final JsonCallbackEvents refreshEvents = new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { prepareSettings(items); } }; FlexTable ft = new FlexTable(); ft.addStyleName("borderTable"); ft.setWidth("100%"); ft.setCellPadding(8); FlexCellFormatter fcf = ft.getFlexCellFormatter(); ft.setHTML(0, 0, "<strong>Short name</strong>"); ft.setHTML(0, 1, "<strong>Type</strong>"); ft.setHTML(0, 2, "<strong>Preview</strong>"); ft.setHTML(0, 3, "<strong>Edit</strong>"); fcf.setStyleName(0, 0, "GPBYFDEFD"); fcf.setStyleName(0, 1, "GPBYFDEFD"); fcf.setStyleName(0, 2, "GPBYFDEFD"); fcf.setStyleName(0, 3, "GPBYFDEFD"); String locale = "en"; if (LocaleInfo.getCurrentLocale().getLocaleName().equals("default") || LocaleInfo.getCurrentLocale().getLocaleName().equals("en")) { locale = "en"; } else { locale = "cs"; } int i = 1; for (final ApplicationFormItem item : items) { final int index = i - 1; // not yet set locale on config page RegistrarFormItemGenerator gen = new RegistrarFormItemGenerator(item, locale); // 0 = label String label = ""; if (gen.isLabelShown()) { label = item.getShortname(); } if (item.isRequired() == true) { label += "*"; } ft.setHTML(i, 0, label); // 1 = type ft.setHTML(i, 1, item.getType()); // 2 = preview Widget w = gen.getWidget(); ft.setWidget(i, 2, w); // 3 = EDIT FlexTable editTable = new FlexTable(); editTable.setStyleName("noBorder"); ft.setWidget(i, 3, editTable); // color for items with unsaved changes if (item.wasEdited() == true) { ft.getFlexCellFormatter().setStyleName(i, 0, "log-changed"); ft.getFlexCellFormatter().setStyleName(i, 1, "log-changed"); ft.getFlexCellFormatter().setStyleName(i, 2, "log-changed"); ft.getFlexCellFormatter().setStyleName(i, 3, "log-changed"); } // mark row for deletion if (item.isForDelete()) { ft.getFlexCellFormatter().setStyleName(i, 0, "log-error"); ft.getFlexCellFormatter().setStyleName(i, 1, "log-error"); ft.getFlexCellFormatter().setStyleName(i, 2, "log-error"); ft.getFlexCellFormatter().setStyleName(i, 3, "log-error"); // undelete button CustomButton undelete = new CustomButton( ButtonTranslation.INSTANCE.undeleteFormItemButton(), ButtonTranslation.INSTANCE.undeleteFormItem(), SmallIcons.INSTANCE.arrowLeftIcon(), new ClickHandler() { public void onClick(ClickEvent event) { items.get(index).setForDelete(false); // refresh prepareSettings(items); } }); FlexTable undelTable = new FlexTable(); undelTable.setStyleName("noBorder"); undelTable.setHTML( 0, 0, "<strong><span style=\"color:red;\">MARKED FOR DELETION</span></strong>"); undelTable.setWidget(0, 1, undelete); ft.setWidget(i, 3, undelTable); } // color for new items to be saved if (item.getId() == 0) { ft.getFlexCellFormatter().setStyleName(i, 0, "log-success"); ft.getFlexCellFormatter().setStyleName(i, 1, "log-success"); ft.getFlexCellFormatter().setStyleName(i, 2, "log-success"); ft.getFlexCellFormatter().setStyleName(i, 3, "log-success"); } // up PushButton upButton = new PushButton( new Image(SmallIcons.INSTANCE.arrowUpIcon()), new ClickHandler() { public void onClick(ClickEvent event) { if (index - 1 < 0) return; // move it items.remove(index); items.add(index - 1, item); item.setOrdnum(item.getOrdnum() - 1); item.setEdited(true); // refresh prepareSettings(items); } }); editTable.setWidget(0, 0, upButton); upButton.setTitle(ButtonTranslation.INSTANCE.moveFormItemUp()); // down PushButton downButton = new PushButton( new Image(SmallIcons.INSTANCE.arrowDownIcon()), new ClickHandler() { public void onClick(ClickEvent event) { if (index + 1 >= items.size()) return; // move it items.remove(index); items.add(index + 1, item); item.setOrdnum(item.getOrdnum() + 1); item.setEdited(true); // refresh prepareSettings(items); } }); editTable.setWidget(0, 1, downButton); downButton.setTitle(ButtonTranslation.INSTANCE.moveFormItemDown()); // edit CustomButton editButton = new CustomButton( ButtonTranslation.INSTANCE.editFormItemButton(), ButtonTranslation.INSTANCE.editFormItem(), SmallIcons.INSTANCE.applicationFormEditIcon()); editButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { session .getTabManager() .addTabToCurrentTab(new EditFormItemTabItem(item, refreshEvents)); } }); editTable.setWidget(0, 2, editButton); // remove CustomButton removeButton = new CustomButton( ButtonTranslation.INSTANCE.deleteButton(), ButtonTranslation.INSTANCE.deleteFormItem(), SmallIcons.INSTANCE.deleteIcon()); removeButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { HTML text = new HTML( "<p>Deleting of form items is <strong>NOT RECOMMENDED!</strong><p>You will loose access to data users submitted in older applications within this form item!<p>Do you want to continue?"); Confirm c = new Confirm( "Delete confirm", text, new ClickHandler() { public void onClick(ClickEvent event) { // mark for deletion when save changes items.get(index).setForDelete(true); // remove if newly created if (items.get(index).getId() == 0) { items.remove(index); } // refresh prepareSettings(items); } }, true); c.setNonScrollable(true); c.show(); } }); editTable.setWidget(0, 3, removeButton); // format fcf.setHeight(i, 0, "28px"); fcf.setVerticalAlignment(i, 0, HasVerticalAlignment.ALIGN_MIDDLE); fcf.setVerticalAlignment(i, 1, HasVerticalAlignment.ALIGN_MIDDLE); fcf.setVerticalAlignment(i, 2, HasVerticalAlignment.ALIGN_MIDDLE); i++; } contents.setWidget(ft); }
/** * Sets the widget used as the header for the panel. * * @param headerWidget the widget to be used as the header */ public void setHeader(final Widget headerWidget) { staticHeader.setWidget(headerWidget); }