Skip to content

Commit

Permalink
Fix #143 (adition of an advanced view switch) [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
hmiguim committed Oct 15, 2019
1 parent ca7d5c8 commit 14e3a96
Show file tree
Hide file tree
Showing 10 changed files with 265 additions and 56 deletions.
3 changes: 1 addition & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

<!-- Convenience properties to set versions -->
<version.gwt>2.8.2</version.gwt>
<version.dbptk>2.6.1-SNAPSHOT</version.dbptk>
<version.dbptk>2.6.2-SNAPSHOT</version.dbptk>
<version.roda>3.0.2</version.roda>

<version.jersey>2.27</version.jersey>
Expand Down Expand Up @@ -221,7 +221,6 @@
<extensions>true</extensions>
<configuration>
<moduleName>${desktop}</moduleName>
<moduleName>${server}</moduleName>
<launcherDir>${project.build.directory}/${project.build.finalName}/WEB-INF/classes/public</launcherDir>
<webappDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes/public</webappDirectory>
</configuration>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,26 +41,32 @@ interface BasicTablePanelUiBinder extends UiBinder<Widget, BasicTablePanel> {
private static BasicTablePanelUiBinder uiBinder = GWT.create(BasicTablePanelUiBinder.class);

private final SingleSelectionModel<C> selectionModel;

private CellTable<C> display;
private ScrollPanel displayScroll;
private SimplePanel displayScrollWrapper;

public static class ColumnInfo<C> {
private Column<C, ?> column;
private double widthEM;
private SafeHtml header;
private boolean hide;

public ColumnInfo(SafeHtml header, double widthEM, Column<C, ?> column, String... addCellStyleNames) {
public ColumnInfo(SafeHtml header, boolean hide, double widthEM, Column<C, ?> column, String... addCellStyleNames) {
this.header = header;
this.widthEM = widthEM;
this.column = column;
this.hide = hide;
for (String addCellStyleName : addCellStyleNames) {
this.column.setCellStyleNames(addCellStyleName);
}
}

public ColumnInfo(String header, boolean hide, double widthEM, Column<C, ?> column, String... addCellStyleNames) {
this(SafeHtmlUtils.fromString(header), hide, widthEM, column, addCellStyleNames);
}

public ColumnInfo(String header, double widthEM, Column<C, ?> column, String... addCellStyleNames) {
this(SafeHtmlUtils.fromString(header), widthEM, column, addCellStyleNames);
this(SafeHtmlUtils.fromString(header), false, widthEM, column, addCellStyleNames);
}
}

Expand All @@ -84,7 +90,7 @@ public BasicTablePanel(Widget headerContent, Widget infoContent, Iterator<C> row
header.setWidget(headerContent);
info.setWidget(infoContent);

CellTable<C> display = createTable(rowItems, columns);
display = createTable(rowItems, columns);
selectionModel = new SingleSelectionModel<>();
display.setSelectionModel(selectionModel);

Expand Down Expand Up @@ -168,8 +174,10 @@ private final CellTable<C> createTable(Iterator<C> rowItems, ColumnInfo<C>... co

// add columns
for (ColumnInfo<C> column : columns) {
cellTable.addColumn(column.column, column.header);
cellTable.setColumnWidth(column.column, column.widthEM, Style.Unit.EM);
if (!column.hide) {
cellTable.addColumn(column.column, column.header);
cellTable.setColumnWidth(column.column, column.widthEM, Style.Unit.EM);
}
}

// fetch rows
Expand All @@ -188,6 +196,8 @@ public SingleSelectionModel<C> getSelectionModel() {
return selectionModel;
}

public CellTable<C> getDisplay() { return display; }

@Override
protected void onLoad() {
super.onLoad();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.databasepreservation.common.shared.client.tools.FontAwesomeIconManager;
import com.databasepreservation.common.shared.client.tools.HistoryManager;
import com.databasepreservation.common.shared.client.tools.ViewerStringUtils;
import com.databasepreservation.desktop.client.common.MetadataField;
import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
Expand All @@ -26,9 +27,16 @@ public class CommonClientUtils {
private static final ClientMessages messages = GWT.create(ClientMessages.class);

public static void addSchemaInfoToFlowPanel(FlowPanel panel, ViewerSchema schema) {
panel.add(new HTMLPanel(getFieldHTML(messages.schemaName(), schema.getName())));
MetadataField schemaName = MetadataField.createInstance(messages.schemaName(), schema.getName());
schemaName.setCSSMetadata("metadata-field", "metadata-information-element-label",
"metadata-information-element-value");

panel.add(schemaName);
if (ViewerStringUtils.isNotBlank(schema.getDescription())) {
panel.add(new HTMLPanel(getFieldHTML(messages.schemaDescription(), schema.getDescription())));
MetadataField description = MetadataField.createInstance(messages.schemaDescription(), schema.getDescription());
description.setCSSMetadata("metadata-field", "metadata-information-element-label",
"metadata-information-element-value");
panel.add(description);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.databasepreservation.common.shared.client.common.utils.CommonClientUtils;
import com.databasepreservation.common.shared.client.tools.BreadcrumbManager;
import com.databasepreservation.common.shared.client.tools.ViewerStringUtils;
import com.databasepreservation.desktop.client.common.MetadataField;
import com.google.gwt.cell.client.SafeHtmlCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.shared.SafeHtml;
Expand All @@ -31,6 +32,8 @@
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimpleCheckBox;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;

import config.i18n.client.ClientMessages;
Expand All @@ -56,9 +59,19 @@ interface SchemaStructurePanelUiBinder extends UiBinder<Widget, SchemaStructureP

private ViewerDatabase database;
private ViewerSchema schema;
private boolean advancedMode = false; // True means advanced attributes are on, false means advanced view is off

@UiField
FlowPanel contentItems;
FlowPanel contentItems, structureInformation;

@UiField
SimplePanel pageExplanation;

@UiField
SimpleCheckBox advancedSwitch;

@UiField
Label switchLabel;

private SchemaStructurePanel(ViewerDatabase database, final String schemaUUID) {
this.database = database;
Expand All @@ -81,8 +94,25 @@ public void handleBreadcrumb(BreadcrumbPanel breadcrumb) {
}

private void init() {
CommonClientUtils.addSchemaInfoToFlowPanel(contentItems, schema);
advancedSwitch.addClickHandler(event -> {
advancedMode = !advancedMode;
contentItems.clear();
initCellTables();
});

CommonClientUtils.addSchemaInfoToFlowPanel(structureInformation, schema);

Label subtitle = new Label(messages.schemaStructurePanelTextForPageSubtitle());
subtitle.addStyleName("h5");

pageExplanation.add(subtitle);

switchLabel.setText(messages.schemaStructurePanelTextForAdvancedOption());

initCellTables();
}

private void initCellTables() {
for (ViewerTable viewerTable : schema.getTables()) {
BasicTablePanel<ViewerColumn> basicTablePanelForTableColumns = getBasicTablePanelForTableColumns(viewerTable);
contentItems.add(basicTablePanelForTableColumns);
Expand Down Expand Up @@ -112,23 +142,38 @@ private BasicTablePanel<ViewerForeignKey> getBasicTablePanelForTableForeignKeys(
Label header = new Label(messages.foreignKeys());
header.addStyleName("h5");

return new BasicTablePanel<>(header, SafeHtmlUtils.EMPTY_SAFE_HTML, table.getForeignKeys().iterator(),
return new BasicTablePanel<ViewerForeignKey>(header, SafeHtmlUtils.EMPTY_SAFE_HTML,
table.getForeignKeys().iterator(),

new BasicTablePanel.ColumnInfo<>(messages.name(), 15, new TextColumn<ViewerForeignKey>() {
new BasicTablePanel.ColumnInfo<>(messages.schemaStructurePanelHeaderTextForForeignKeyName(), false, 15,
new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
return foreignKey.getName();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_referencedSchema(), 15, new TextColumn<ViewerForeignKey>() {
new BasicTablePanel.ColumnInfo<>(messages.description(), false, 35, new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
if (ViewerStringUtils.isNotBlank(foreignKey.getDescription())) {
return foreignKey.getDescription();
} else {
return "";
}
}
}),

new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_referencedSchema(), !advancedMode, 15,
new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
return database.getMetadata().getTable(foreignKey.getReferencedTableUUID()).getSchemaName();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_referencedTable(), 15, new TextColumn<ViewerForeignKey>() {
new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_referencedTable(), !advancedMode, 15,
new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
return database.getMetadata().getTable(foreignKey.getReferencedTableUUID()).getName();
Expand All @@ -137,7 +182,7 @@ public String getValue(ViewerForeignKey foreignKey) {

new BasicTablePanel.ColumnInfo<>(
SafeHtmlUtils.fromSafeConstant(messages.mappingSourceToReferenced("<i class=\"fa fa-long-arrow-right\"></i>")),
20, new Column<ViewerForeignKey, SafeHtml>(new SafeHtmlCell()) {
!advancedMode, 20, new Column<ViewerForeignKey, SafeHtml>(new SafeHtmlCell()) {
@Override
public SafeHtml getValue(ViewerForeignKey foreignKey) {
ViewerTable referencedTable = database.getMetadata().getTable(foreignKey.getReferencedTableUUID());
Expand All @@ -158,38 +203,29 @@ public SafeHtml getValue(ViewerForeignKey foreignKey) {
}
}),

new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_matchType(), 10, new TextColumn<ViewerForeignKey>() {
new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_matchType(), !advancedMode, 10,
new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
return foreignKey.getMatchType();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_updateAction(), 9, new TextColumn<ViewerForeignKey>() {
new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_updateAction(), !advancedMode, 9,
new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
return foreignKey.getUpdateAction();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_deleteAction(), 9, new TextColumn<ViewerForeignKey>() {
new BasicTablePanel.ColumnInfo<>(messages.foreignKeys_deleteAction(), !advancedMode, 9,
new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
return foreignKey.getDeleteAction();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.description(), 35, new TextColumn<ViewerForeignKey>() {
@Override
public String getValue(ViewerForeignKey foreignKey) {
if (ViewerStringUtils.isNotBlank(foreignKey.getDescription())) {
return foreignKey.getDescription();
} else {
return "";
}
}
})

);
}

Expand All @@ -215,9 +251,9 @@ private BasicTablePanel<ViewerColumn> getBasicTablePanelForTableColumns(ViewerTa
}

// create and return the table panel
return new BasicTablePanel<>(header, infoBuilder.toSafeHtml(), table.getColumns().iterator(),
return new BasicTablePanel<ViewerColumn>(header, infoBuilder.toSafeHtml(), table.getColumns().iterator(),

new BasicTablePanel.ColumnInfo<>(SafeHtmlUtils.EMPTY_SAFE_HTML, 2.2,
new BasicTablePanel.ColumnInfo<>(SafeHtmlUtils.EMPTY_SAFE_HTML, false, 2.2,
new Column<ViewerColumn, SafeHtml>(new SafeHtmlCell()) {
@Override
public SafeHtml getValue(ViewerColumn column) {
Expand All @@ -232,49 +268,48 @@ public SafeHtml getValue(ViewerColumn column) {
}
}, "primary-key-col"),

new BasicTablePanel.ColumnInfo<>(messages.columnName(), 15, new TextColumn<ViewerColumn>() {
new BasicTablePanel.ColumnInfo<>(messages.columnName(), false, 15, new TextColumn<ViewerColumn>() {
@Override
public String getValue(ViewerColumn column) {
return column.getDisplayName();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.typeName(), 15, new TextColumn<ViewerColumn>() {
new BasicTablePanel.ColumnInfo<>(messages.description(), false, 35, new TextColumn<ViewerColumn>() {
@Override
public String getValue(ViewerColumn column) {
return column.getType().getTypeName();
if (ViewerStringUtils.isNotBlank(column.getDescription())) {
return column.getDescription();
} else {
return "";
}
}
}),

new BasicTablePanel.ColumnInfo<>(messages.originalTypeName(), 15, new TextColumn<ViewerColumn>() {
new BasicTablePanel.ColumnInfo<>(messages.typeName(), !advancedMode, 15, new TextColumn<ViewerColumn>() {
@Override
public String getValue(ViewerColumn column) {
return column.getType().getOriginalTypeName();
return column.getType().getTypeName();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.nullable(), 8, new TextColumn<ViewerColumn>() {
new BasicTablePanel.ColumnInfo<>(messages.originalTypeName(), !advancedMode, 15, new TextColumn<ViewerColumn>() {
@Override
public String getValue(ViewerColumn column) {
if (column.getNillable()) {
return "Yes";
} else {
return "No";
}
return column.getType().getOriginalTypeName();
}
}),

new BasicTablePanel.ColumnInfo<>(messages.description(), 35, new TextColumn<ViewerColumn>() {
new BasicTablePanel.ColumnInfo<>(messages.nullable(), !advancedMode, 8, new TextColumn<ViewerColumn>() {
@Override
public String getValue(ViewerColumn column) {
if (ViewerStringUtils.isNotBlank(column.getDescription())) {
return column.getDescription();
if (column.getNillable()) {
return "Yes";
} else {
return "";
return "No";
}
}
})

);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,22 @@

<ui:with field='messages' type='config.i18n.client.ClientMessages' />
<g:FlowPanel>
<g:Label addStyleNames="h1"><ui:text from='{messages.menusidebar_structure}' /></g:Label>
<g:FlowPanel ui:field="contentItems"/>
<g:FlowPanel addStyleNames="structure-header">
<g:SimplePanel>
<g:Label addStyleNames="h1">
<ui:text from='{messages.menusidebar_structure}'/>
</g:Label>
</g:SimplePanel>
<g:FlowPanel addStyleNames="advancedOptionsPanel">
<g:Label ui:field="switchLabel" addStyleNames="switch-label"/>
<g:SimpleCheckBox ui:field="advancedSwitch" addStyleNames="switch"/>
</g:FlowPanel>
</g:FlowPanel>
<g:FlowPanel>
<g:FlowPanel ui:field="structureInformation">
<g:SimplePanel ui:field="pageExplanation"/>
</g:FlowPanel>
<g:FlowPanel ui:field="contentItems"/>
</g:FlowPanel>
</g:FlowPanel>
</ui:UiBinder>
9 changes: 9 additions & 0 deletions src/main/java/config/i18n/client/ClientMessages.java
Original file line number Diff line number Diff line change
Expand Up @@ -984,4 +984,13 @@ public interface ClientMessages extends Messages {
String progressBarPanelTextForCreateWizardProgressTitle();

String progressBarPanelTextForCreateWizardProgressSubTitle();

/*********************************************
* Structure Panel
********************************************/
String schemaStructurePanelTextForAdvancedOption();

String schemaStructurePanelHeaderTextForForeignKeyName();

String schemaStructurePanelTextForPageSubtitle();
}
Loading

0 comments on commit 14e3a96

Please sign in to comment.