/* * Copyright 2014-2016 CyberVision, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kaaproject.kaa.server.admin.client.mvp.view.ctl; import com.google.gwt.dom.client.Style.FontWeight; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import org.kaaproject.avro.ui.gwt.client.widget.ActionsButton; import org.kaaproject.avro.ui.gwt.client.widget.AvroWidgetsConfig; import org.kaaproject.avro.ui.gwt.client.widget.SizedTextBox; import org.kaaproject.avro.ui.shared.RecordField; import org.kaaproject.kaa.server.admin.client.mvp.view.CtlSchemaView; import org.kaaproject.kaa.server.admin.client.mvp.view.base.BaseDetailsViewImpl; import org.kaaproject.kaa.server.admin.client.mvp.view.widget.IntegerListBox; import org.kaaproject.kaa.server.admin.client.mvp.view.widget.KaaAdminSizedTextBox; import org.kaaproject.kaa.server.admin.client.mvp.view.widget.RecordPanel; import org.kaaproject.kaa.server.admin.client.util.Utils; public class CtlSchemaViewImpl extends BaseDetailsViewImpl implements CtlSchemaView, ValueChangeHandler<RecordField> { private Label scope; private IntegerListBox version; private Button createNewSchemaVersionButton; private Button updateSchemaScopeButton; private Button deleteSchemaVersionButton; private ActionsButton exportActionsButton; private SizedTextBox createdUsername; private SizedTextBox createdDateTime; private RecordPanel schemaForm; private Widget backButtonPanelWidget; private Button backButtonWidget; private Label titleLabelWidget; private Button saveButtonWidget; private Button cancelButtonWidget; public CtlSchemaViewImpl(boolean create, boolean editable) { super(create, editable); } @Override protected String getCreateTitle() { return Utils.constants.addNewCtl(); } @Override protected String getViewTitle() { return Utils.constants.commonType(); } @Override protected String getSubTitle() { return Utils.constants.commonTypeDetails(); } @Override protected Widget getBackButtonPanelWidget() { return backButtonPanelWidget; } @Override protected Button getBackButtonWidget() { return backButtonWidget; } @Override protected Label getTitileLabelWidget() { return titleLabelWidget; } @Override protected Button getSaveButtonWidget() { return saveButtonWidget; } @Override protected Button getCancelButtonWidget() { return cancelButtonWidget; } @Override protected void constructTopPanel() { FlexTable flexTable = new FlexTable(); flexTable.setCellSpacing(0); flexTable.setCellPadding(0); flexTable.setHeight("100%"); topPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); topPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); topPanel.add(flexTable); topPanel.setCellHeight(flexTable, "100%"); HorizontalPanel backButtonPanel = new HorizontalPanel(); backButtonPanel.setHeight("100%"); backButtonPanel.addStyleName(Utils.kaaAdminStyle.bAppPaddedPanel()); backButtonPanel.setVisible(false); flexTable.setWidget(0, 0, backButtonPanel); flexTable.getFlexCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE); backButtonPanelWidget = backButtonPanel; Button backButton = new Button(); backButton.addStyleName(Utils.kaaAdminStyle.bAppBackButton()); backButtonPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); backButtonPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); backButtonPanel.add(backButton); backButtonPanel.setCellHeight(backButton, "100%"); backButtonWidget = backButton; VerticalPanel verticalPanel = new VerticalPanel(); verticalPanel.setHeight("100%"); flexTable.setWidget(0, 1, verticalPanel); flexTable.getFlexCellFormatter().setVerticalAlignment(0, 1, HasVerticalAlignment.ALIGN_MIDDLE); HorizontalPanel firstRowPanel = new HorizontalPanel(); firstRowPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); firstRowPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); verticalPanel.add(firstRowPanel); HorizontalPanel secondRowPanel = new HorizontalPanel(); secondRowPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); secondRowPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); if (!create) { backButton.getElement().getStyle().setPaddingTop(25, Unit.PX); backButton.getElement().getStyle().setPaddingBottom(25, Unit.PX); firstRowPanel.setHeight("45px"); firstRowPanel.getElement().getStyle().setPaddingBottom(5, Unit.PX); secondRowPanel.setHeight("45px"); topPanel.setHeight("105px"); topPanel.getElement().getStyle().setPaddingTop(10, Unit.PX); updateNorthSize(185); } else { firstRowPanel.setHeight("70px"); secondRowPanel.setHeight("100%"); topPanel.setHeight("80px"); updateNorthSize(175); } verticalPanel.add(secondRowPanel); Label titleLabel = new Label(); titleLabel.addStyleName(Utils.kaaAdminStyle.bAppContentTitle()); firstRowPanel.add(titleLabel); firstRowPanel.setCellHeight(titleLabel, "100%"); titleLabelWidget = titleLabel; scope = new Label(); scope.getElement().getStyle().setFontSize(16, Unit.PX); scope.getElement().getStyle().setFontWeight(FontWeight.NORMAL); int horizontalMargin = 15; scope.getElement().getStyle().setMarginLeft(horizontalMargin, Unit.PX); firstRowPanel.add(scope); firstRowPanel.setCellHeight(scope, "100%"); updateSchemaScopeButton = new Button(Utils.constants.promote()); updateSchemaScopeButton.setVisible(!create && editable); updateSchemaScopeButton.getElement().getStyle().setMarginLeft(horizontalMargin, Unit.PX); if (hasUpdateScopeOption()) { firstRowPanel.add(updateSchemaScopeButton); firstRowPanel.setCellHeight(updateSchemaScopeButton, "100%"); } Label versionLabel = new Label(Utils.constants.version()); versionLabel.addStyleName(Utils.kaaAdminStyle.bAppContentTitle()); versionLabel.getElement().getStyle().setFontSize(16, Unit.PX); versionLabel.getElement().getStyle().setFontWeight(FontWeight.NORMAL); version = new IntegerListBox(); version.getElement().getStyle().setPadding(5, Unit.PX); version.getElement().getStyle().setMarginLeft(10, Unit.PX); HorizontalPanel versionPanel = new HorizontalPanel(); versionPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); versionPanel.add(versionLabel); versionPanel.add(version); versionPanel.setVisible(!create); secondRowPanel.add(versionPanel); secondRowPanel.setCellHeight(versionPanel, "100%"); createNewSchemaVersionButton = new Button(Utils.constants.createNewVersion()); createNewSchemaVersionButton.setVisible(!create && editable); createNewSchemaVersionButton.getElement().getStyle().setMarginLeft(horizontalMargin, Unit.PX); if (!create && editable) { secondRowPanel.add(createNewSchemaVersionButton); secondRowPanel.setCellHeight(createNewSchemaVersionButton, "100%"); } exportActionsButton = new ActionsButton(Utils.resources.export(), Utils.constants.export()); exportActionsButton.setVisible(!create); exportActionsButton.getElement().getStyle().setMarginLeft(horizontalMargin, Unit.PX); if (!create) { secondRowPanel.add(exportActionsButton); secondRowPanel.setCellHeight(exportActionsButton, "100%"); } Button saveButton = new Button(); saveButton.getElement().getStyle().setMarginLeft(horizontalMargin, Unit.PX); if (create) { firstRowPanel.add(saveButton); firstRowPanel.setCellHeight(saveButton, "100%"); } saveButtonWidget = saveButton; Button cancelButton = new Button(); cancelButton.setVisible(false); cancelButton.getElement().getStyle().setMarginLeft(horizontalMargin, Unit.PX); if (create) { firstRowPanel.add(cancelButton); firstRowPanel.setCellHeight(cancelButton, "100%"); } cancelButtonWidget = cancelButton; deleteSchemaVersionButton = new Button(Utils.constants.delete()); deleteSchemaVersionButton.addStyleName(Utils.kaaAdminStyle.deleteButton()); deleteSchemaVersionButton.setVisible(!create && editable); deleteSchemaVersionButton.getElement().getStyle().setMarginLeft(horizontalMargin, Unit.PX); if (!create && editable) { secondRowPanel.add(deleteSchemaVersionButton); secondRowPanel.setCellHeight(deleteSchemaVersionButton, "100%"); } } @Override protected void initDetailsTable() { if (create) { requiredFieldsNoteLabel.setVisible(true); } else { requiredFieldsNoteLabel.setVisible(false); requiredFieldsNoteLabel.getElement().getParentElement().getStyle().setHeight(0, Unit.PX); } Label authorLabel = new Label(Utils.constants.author()); createdUsername = new KaaAdminSizedTextBox(-1, false); createdUsername.setWidth("100%"); detailsTable.setWidget(0, 0, authorLabel); detailsTable.setWidget(0, 1, createdUsername); authorLabel.setVisible(!create); createdUsername.setVisible(!create); Label dateTimeCreatedLabel = new Label(Utils.constants.dateTimeCreated()); createdDateTime = new KaaAdminSizedTextBox(-1, false); createdDateTime.setWidth("100%"); detailsTable.setWidget(1, 0, dateTimeCreatedLabel); detailsTable.setWidget(1, 1, createdDateTime); dateTimeCreatedLabel.setVisible(!create); createdDateTime.setVisible(!create); getFooter().addStyleName(Utils.kaaAdminStyle.bAppContentDetailsTable()); schemaForm = new RecordPanel(new AvroWidgetsConfig.Builder() .recordPanelWidth(900).createConfig(), false, null, this, !create, !create); if (create) { schemaForm.addValueChangeHandler(this); } getFooter().setWidth("1000px"); getFooter().add(schemaForm); } protected boolean hasUpdateScopeOption() { return false; } @Override protected void resetImpl() { version.reset(); createdUsername.setValue(""); createdDateTime.setValue(""); schemaForm.reset(); } @Override public ValueListBox<Integer> getVersion() { return version; } @Override protected boolean validate() { boolean result = !create || schemaForm.validate(); return result; } @Override public void onValueChange(ValueChangeEvent<RecordField> event) { fireChanged(); } @Override public RecordPanel getSchemaForm() { return schemaForm; } @Override public HasValue<String> getCreatedUsername() { return createdUsername; } @Override public HasValue<String> getCreatedDateTime() { return createdDateTime; } @Override public HasClickHandlers getCreateNewSchemaVersionButton() { return createNewSchemaVersionButton; } @Override public HasClickHandlers getUpdateSchemaScopeButton() { return updateSchemaScopeButton; } @Override public HasClickHandlers getDeleteSchemaVersionButton() { return deleteSchemaVersionButton; } @Override public ActionsButton getExportActionsButton() { return exportActionsButton; } @Override public Label getScope() { return scope; } }