package com.logicaldoc.gui.frontend.client.metadata.template; import com.google.gwt.user.client.rpc.AsyncCallback; import com.logicaldoc.gui.common.client.beans.GUIAttribute; import com.logicaldoc.gui.common.client.beans.GUIAttributeSet; import com.logicaldoc.gui.common.client.i18n.I18N; import com.logicaldoc.gui.common.client.log.Log; import com.logicaldoc.gui.common.client.util.ItemFactory; import com.logicaldoc.gui.frontend.client.services.AttributeSetService; import com.smartgwt.client.types.HeaderControls; import com.smartgwt.client.types.SelectionStyle; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.events.CloseClickEvent; import com.smartgwt.client.widgets.events.CloseClickHandler; import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.toolbar.ToolStrip; import com.smartgwt.client.widgets.toolbar.ToolStripButton; public class AddTemplateAttributeDialog extends Window { private ListGrid setAttributesList; private TemplatePropertiesPanel propertiesPanel; public AddTemplateAttributeDialog(TemplatePropertiesPanel panel) { this.propertiesPanel = panel; setHeaderControls(HeaderControls.HEADER_LABEL, HeaderControls.CLOSE_BUTTON); setTitle(I18N.message("attributesets")); setWidth(500); setHeight(400); setIsModal(true); setShowModalMask(true); setCanDragResize(true); centerInPage(); setAutoSize(true); addCloseClickHandler(new CloseClickHandler() { @Override public void onCloseClick(CloseClickEvent event) { destroy(); } }); } @Override public void onDraw() { setAttributesList = new ListGrid(); setAttributesList.setEmptyMessage(I18N.message("notitemstoshow")); setAttributesList.setWidth100(); setAttributesList.setHeight(getHeight()); setAttributesList.setEmptyMessage(I18N.message("norecords")); setAttributesList.setCanReorderRecords(false); setAttributesList.setCanSort(false); setAttributesList.setCanFreezeFields(false); setAttributesList.setCanGroupBy(false); setAttributesList.setLeaveScrollbarGap(false); setAttributesList.setShowHeader(true); setAttributesList.setSelectionType(SelectionStyle.MULTIPLE); setAttributesList.setCanEdit(false); setAttributesList.setShowRowNumbers(true); ListGridField name = new ListGridField("name", I18N.message("name")); name.setCanEdit(false); name.setCanSort(false); name.setWidth(100); ListGridField label = new ListGridField("label", I18N.message("label")); label.setCanEdit(true); label.setCanSort(false); label.setWidth(150); ListGridField type = new ListGridField("type", I18N.message("type")); type.setCanEdit(false); type.setCanSort(false); type.setWidth(100); type.setCellFormatter(new AttributeTypeFormatter()); setAttributesList.setFields(name, label, type); ToolStrip toolStrip = new ToolStrip(); toolStrip.setHeight(20); toolStrip.setWidth100(); toolStrip.addSpacer(2); SelectItem setSelector = ItemFactory.newAttributeSetSelector(); toolStrip.addFormItem(setSelector); setSelector.addChangedHandler(new ChangedHandler() { @Override public void onChanged(ChangedEvent event) { if (event.getValue() == null) fillSetAttributesList(null); else fillSetAttributesList(Long.parseLong(event.getValue().toString())); } }); toolStrip.addSeparator(); ToolStripButton add = new ToolStripButton(); add.setTitle(I18N.message("addselection")); toolStrip.addButton(add); add.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (setAttributesList.getSelectedRecords() == null || setAttributesList.getSelectedRecords().length < 1) SC.warn(I18N.message("pleaseselectanattribute")); else propertiesPanel.addAttributes(setAttributesList.getSelectedRecords()); } }); ToolStripButton close = new ToolStripButton(); close.setTitle(I18N.message("close")); toolStrip.addButton(close); close.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { destroy(); } }); toolStrip.addFill(); addItem(toolStrip); addItem(setAttributesList); } protected void fillSetAttributesList(Long setId) { AttributeSetService.Instance.get().getAttributeSet(setId, new AsyncCallback<GUIAttributeSet>() { @Override public void onFailure(Throwable caught) { Log.serverError(caught); } @Override public void onSuccess(GUIAttributeSet set) { ListGridRecord[] records = setAttributesList.getRecords(); if (records != null) for (ListGridRecord record : records) setAttributesList.removeData(record); GUIAttribute[] attributes = set.getAttributes(); if (attributes == null) return; for (int i = 0; i < attributes.length; i++) { GUIAttribute att = attributes[i]; ListGridRecord record = new ListGridRecord(); record.setAttribute("name", att.getName()); record.setAttribute("label", att.getLabel()); record.setAttribute("set", att.getSet()); record.setAttribute("setId", att.getSetId()); record.setAttribute("type", att.getType()); record.setAttribute("editor", att.getEditor()); record.setAttribute("mandatory", att.isMandatory()); record.setAttribute("hidden", att.isHidden()); record.setAttribute("multiple", att.isMultiple()); setAttributesList.getRecordList().add(record); } } }); } }