/*
* Copyright 2015 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.datamodeller.client;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Widget;
import org.gwtbootstrap3.client.shared.event.ShowEvent;
import org.gwtbootstrap3.client.shared.event.ShowHandler;
import org.gwtbootstrap3.client.ui.Button;
import org.gwtbootstrap3.client.ui.HelpBlock;
import org.gwtbootstrap3.client.ui.PanelBody;
import org.gwtbootstrap3.client.ui.PanelCollapse;
import org.gwtbootstrap3.client.ui.Radio;
import org.gwtbootstrap3.client.ui.TextBox;
import org.kie.workbench.common.screens.datamodeller.client.pdescriptor.PersistenceUnitPropertyGrid;
import org.kie.workbench.common.screens.datamodeller.client.pdescriptor.ProjectClassList;
import org.kie.workbench.common.screens.datamodeller.client.pdescriptor.XMLViewer;
import org.kie.workbench.common.widgets.metadata.client.KieEditorViewImpl;
public class PersistenceDescriptorEditorViewImpl
extends KieEditorViewImpl
implements PersistenceDescriptorEditorView {
interface PersistenceDescriptorEditorViewBinder
extends
UiBinder<Widget, PersistenceDescriptorEditorViewImpl> {
}
private static PersistenceDescriptorEditorViewBinder uiBinder = GWT.create( PersistenceDescriptorEditorViewBinder.class );
@UiField
TextBox persistenceUnitTextBox;
@UiField
HelpBlock persistenceUnitHelpInline;
@UiField
TextBox persistenceProviderTextBox;
@UiField
HelpBlock persistenceProviderHelpInline;
@UiField
TextBox datasourceTextBox;
@UiField
Button datasourceSelectButton;
@UiField
HelpBlock datasourceHelpInline;
@UiField
Radio transactionTypeJTARadioButton;
@UiField
Radio transactionTypeResourceLocalRadioButton;
@UiField
HelpBlock transactionTypeHelpInline;
@UiField
PanelCollapse collapsePropertiesPanel;
@UiField
PanelBody propertiesGridPanel;
@Inject
PersistenceUnitPropertyGrid persistenceUnitProperties;
@UiField
PanelCollapse collapsePersistencePanel;
@UiField
PanelBody persistenceUnitClassesPanel;
@Inject
ProjectClassList persistenceUnitClasses;
@Inject
private XMLViewer xmlViewer;
Presenter presenter;
public PersistenceDescriptorEditorViewImpl() {
initWidget( uiBinder.createAndBindUi( this ) );
}
@PostConstruct
void init() {
datasourceSelectButton.setVisible( false );
propertiesGridPanel.add( persistenceUnitProperties );
persistenceUnitClassesPanel.add( persistenceUnitClasses );
collapsePropertiesPanel.addShowHandler( new ShowHandler() {
@Override
public void onShow( ShowEvent showEvent ) {
Scheduler.get().scheduleDeferred( new Scheduler.ScheduledCommand() {
@Override
public void execute() {
persistenceUnitProperties.redraw();
}
} );
}
} );
collapsePersistencePanel.addShowHandler( new ShowHandler() {
@Override
public void onShow( ShowEvent showEvent ) {
Scheduler.get().scheduleDeferred( new Scheduler.ScheduledCommand() {
@Override
public void execute() {
persistenceUnitClasses.redraw();
}
} );
}
} );
}
@Override
public String getPersistenceUnitName() {
return persistenceUnitTextBox.getText();
}
@Override
public void setPersistenceUnitName( String persistenceUnitName ) {
persistenceUnitTextBox.setText( persistenceUnitName );
}
@Override
public String getPersistenceProvider() {
return persistenceProviderTextBox.getText();
}
@Override
public void setPersistenceProvider( String persistenceProvider ) {
persistenceProviderTextBox.setText( persistenceProvider );
}
@Override
public String getJTADataSource() {
return datasourceTextBox.getText();
}
@Override
public void setJTADataSource( String jtaDataSource ) {
datasourceTextBox.setText( jtaDataSource );
}
@Override
public boolean getJTATransactions() {
return transactionTypeJTARadioButton.getValue();
}
@Override
public void setJTATransactions( boolean jtaTransactions ) {
transactionTypeJTARadioButton.setValue( jtaTransactions );
}
@Override
public boolean getResourceLocalTransactions() {
return transactionTypeResourceLocalRadioButton.getValue();
}
@Override
public void setResourceLocalTransactions( boolean resourceLocalTransactions ) {
transactionTypeResourceLocalRadioButton.setValue( resourceLocalTransactions );
}
@Override
public void setResourceLocalTransactionsVisible( boolean visible ) {
transactionTypeResourceLocalRadioButton.setVisible( visible );
}
@Override
public void setTransactionTypeHelpMessage( String message ) {
transactionTypeHelpInline.setText( message );
}
@Override
public void setSource( String source ) {
xmlViewer.setContent( source );
}
@Override
public void setPresenter( Presenter presenter ) {
this.presenter = presenter;
persistenceUnitClasses.addLoadClassesHandler( presenter );
}
@Override
public void showDataSourceSelector( boolean show ) {
datasourceSelectButton.setVisible( show );
}
@Override
public Widget getSourceEditor() {
return xmlViewer;
}
@Override
public PersistenceUnitPropertyGrid getPersistenceUnitProperties() {
return persistenceUnitProperties;
}
@Override
public ProjectClassList getPersistenceUnitClasses() {
return persistenceUnitClasses;
}
@Override
public void redraw() {
persistenceUnitProperties.redraw();
persistenceUnitClasses.redraw();
}
@Override
public void clear() {
setPersistenceUnitName( null );
setPersistenceProvider( null );
setJTADataSource( null );
setJTATransactions( false );
setResourceLocalTransactions( false );
setResourceLocalTransactionsVisible( false );
setTransactionTypeHelpMessage( null );
}
@Override
public void setReadOnly( boolean readOnly ) {
persistenceUnitTextBox.setReadOnly( readOnly );
persistenceProviderTextBox.setReadOnly( readOnly );
datasourceTextBox.setReadOnly( readOnly );
transactionTypeJTARadioButton.setEnabled( !readOnly );
transactionTypeResourceLocalRadioButton.setEnabled( !readOnly );
persistenceUnitProperties.setReadOnly( readOnly );
persistenceUnitClasses.setReadOnly( readOnly );
}
@UiHandler("persistenceUnitTextBox")
void onPersistenceUnitChanged( ValueChangeEvent<String> event ) {
presenter.onPersistenceUnitNameChange();
}
@UiHandler("persistenceProviderTextBox")
void onPersistenceProviderChanged( ChangeEvent event ) {
presenter.onPersistenceProviderChange();
}
@UiHandler("datasourceTextBox")
void onJTADataSourceChanged( ChangeEvent event ) {
presenter.onJTADataSourceChange();
}
@UiHandler("transactionTypeResourceLocalRadioButton")
void onTransactionTypeResourceLocalRadioButtonChanged( ClickEvent event ) {
presenter.onJTATransactionsChange();
}
@UiHandler("transactionTypeJTARadioButton")
void onTransactionTypeJTARadioButtonChanged( ClickEvent event ) {
presenter.onResourceLocalTransactionsChange();
}
@UiHandler( "datasourceSelectButton" )
void onSelectDataSource( ClickEvent event ) {
presenter.onSelectDataSource();
}
}