/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * 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.kie.workbench.common.screens.datasource.management.client.explorer.common; import javax.annotation.PostConstruct; import javax.enterprise.context.Dependent; import javax.inject.Inject; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import org.gwtbootstrap3.client.ui.LinkedGroup; import org.jboss.errai.ui.shared.api.annotations.DataField; import org.jboss.errai.ui.shared.api.annotations.EventHandler; import org.jboss.errai.ui.shared.api.annotations.Templated; import org.uberfire.backend.vfs.Path; import org.uberfire.mvp.PlaceRequest; import org.uberfire.mvp.impl.DefaultPlaceRequest; import org.uberfire.mvp.impl.PathPlaceRequest; @Dependent @Templated public class DefExplorerContentViewImpl extends Composite implements DefExplorerContentView { @DataField( "content-accordion" ) private Element contentAccordion = DOM.createDiv(); @Inject @DataField( "datasources-panel-link" ) private Anchor dataSourcesPanelLink; @DataField ( "datasources-panel" ) private Element dataSourcesPanel = DOM.createDiv(); @Inject @DataField( "datasources-list-group" ) private LinkedGroup dataSourcesListGroup; @Inject @DataField( "add-new-datasource" ) private Anchor newDataSourceLink; @Inject @DataField( "drivers-panel-link" ) private Anchor driversPanelLink; @DataField( "drivers-panel" ) private Element driversPanel = DOM.createDiv(); @Inject @DataField( "drivers-list-group" ) private LinkedGroup driversListGroup; @Inject @DataField( "add-new-driver" ) private Anchor newDriverLink; private Presenter presenter; public DefExplorerContentViewImpl() { } @PostConstruct private void init() { //recalculate the panel group needed ids in order to enable more than one instance to be instantiated // on the same page. String contentAccordionId = Document.get().createUniqueId(); contentAccordion.setId( contentAccordionId ); String dataSourcesPanelId = Document.get().createUniqueId(); dataSourcesPanelLink.getElement().setAttribute( "data-parent", "#" + contentAccordionId ); dataSourcesPanelLink.getElement().setAttribute( "data-target", "#" + dataSourcesPanelId ); dataSourcesPanel.setId( dataSourcesPanelId ); String driversPanelLinkId = Document.get().createUniqueId(); driversPanelLink.getElement().setAttribute( "data-parent", "#" + contentAccordionId ); driversPanelLink.getElement().setAttribute( "data-target", "#" + driversPanelLinkId ); driversPanel.setId( driversPanelLinkId ); } @Override public void init( Presenter presenter ) { this.presenter = presenter; } @Override public void addDataSourceItem( DefItem item ) { dataSourcesListGroup.add( item ); } @Override public void addDriverItem( DefItem item ) { driversListGroup.add( item ); } @Override public void clear() { dataSourcesListGroup.clear(); driversListGroup.clear(); } @Override public void clearDataSources() { dataSourcesListGroup.clear(); } @Override public void clearDrivers() { driversListGroup.clear(); } @Override public PlaceRequest createEditorPlaceRequest( Path path ) { return new PathPlaceRequest( path ); } @Override public PlaceRequest createScreenPlaceRequest( String identifier ) { return new DefaultPlaceRequest( identifier ); } @EventHandler( "add-new-datasource" ) private void onAddNewDataSource( ClickEvent event ) { presenter.onAddDataSource(); } @EventHandler( "add-new-driver" ) private void onAddNewDriver( ClickEvent event ) { presenter.onAddDriver(); } }