Skip to content

Commit

Permalink
#20602 load controls for extra pages
Browse files Browse the repository at this point in the history
  • Loading branch information
Destrolaric committed Jan 29, 2024
1 parent 892fe88 commit 782a9e9
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,6 @@ private IDataSourceConnectionEditor getOriginalConnectionEditor() {
public void activatePage() {
if (connectionEditor == null) {
createProviderPage(getControl().getParent());
//UIUtils.resizeShell(getWizard().getContainer().getShell());
}

Control control = getControl();
Expand Down Expand Up @@ -192,6 +191,31 @@ public void activatePage() {
//getContainer().updateTitleBar();
}

private void createAdditionalRequiredPages() {
if (connectionEditor instanceof IDialogPageProvider dialogPageProvider) {
IDialogPage[] requiredDialogPages = dialogPageProvider.getRequiredDialogPages();
// potentially n^2 but we don't have a lot of required pages...
if (requiredDialogPages != null) {
for (IDialogPage requiredDialogPage : requiredDialogPages) {
for (CTabItem item : tabFolder.getItems()) {
if (item.getData().equals(requiredDialogPage)) {
Composite panel = (Composite) item.getControl();
try {
panel.setRedraw(false);
requiredDialogPage.createControl(panel);
Dialog.applyDialogFont(panel);
panel.layout(true, true);
requiredDialogPage.setVisible(false);
} finally {
panel.setRedraw(true);
}
}
}
}
}
}
}

@Override
public void deactivatePage() {
DataSourceDescriptor connectionInfo = getActiveDataSource();
Expand Down Expand Up @@ -334,6 +358,7 @@ public void widgetSelected(SelectionEvent e) {
setErrorMessage("Can't create settings dialog: " + ex.getMessage());
}
parent.layout();
createAdditionalRequiredPages();
}

@NotNull
Expand Down Expand Up @@ -367,8 +392,7 @@ private ToolBar createChevron(@NotNull List<IDialogPage> pages) {
}

private boolean confirmTabClose(@NotNull CTabItem item) {
if (item.getData() instanceof ConnectionPageNetworkHandler) {
final ConnectionPageNetworkHandler page = (ConnectionPageNetworkHandler) item.getData();
if (item.getData() instanceof ConnectionPageNetworkHandler page) {
final NetworkHandlerDescriptor descriptor = page.getHandlerDescriptor();

final int decision = ConfirmationDialog.confirmAction(
Expand Down Expand Up @@ -504,7 +528,7 @@ public void updateButtons() {

@Override
public boolean openDriverEditor() {
DriverEditDialog dialog = new DriverEditDialog(wizard.getShell(), (DriverDescriptor) this.getDriver());
DriverEditDialog dialog = new DriverEditDialog(wizard.getShell(), this.getDriver());
return dialog.open() == IDialogConstants.OK_ID;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.oracle.model.OracleConstants;
import org.jkiss.dbeaver.ext.oracle.model.auth.OracleAuthModelDatabaseNative;
import org.jkiss.dbeaver.ext.oracle.model.auth.OracleAuthOS;
Expand Down Expand Up @@ -72,7 +73,8 @@ public class OracleConnectionPage extends ConnectionPageWithAuth implements IDia
private TextWithOpenFolder tnsPathText;

private boolean activated = false;
private Image logoImage;
private final Image logoImage;
private OracleConnectionExtraPage oracleConnectionExtraPage;

public OracleConnectionPage() {
logoImage = createImage("icons/oracle_logo.png"); //$NON-NLS-1
Expand Down Expand Up @@ -450,12 +452,17 @@ public void widgetDefaultSelected(SelectionEvent e) {
}

@Override
public IDialogPage[] getDialogPages(boolean extrasOnly, boolean forceCreate)
{
return new IDialogPage[] {
new OracleConnectionExtraPage(),
public IDialogPage[] getDialogPages(boolean extrasOnly, boolean forceCreate) {
oracleConnectionExtraPage = new OracleConnectionExtraPage();
return new IDialogPage[]{
oracleConnectionExtraPage,
new DriverPropertiesDialogPage(this),
};
}

@Nullable
@Override
public IDialogPage[] getRequiredDialogPages() {
return new IDialogPage[]{oracleConnectionExtraPage};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.postgresql.PostgreConstants;
import org.jkiss.dbeaver.ext.postgresql.PostgreMessages;
import org.jkiss.dbeaver.ext.postgresql.PostgreUtils;
Expand All @@ -54,14 +55,15 @@
* PostgreConnectionPage
*/
public class PostgreConnectionPage extends ConnectionPageWithAuth implements IDialogPageProvider {

private Text urlText;
private Text hostText;
private Text portText;
private Text dbText;
private Text roleText; //TODO: make it a combo and fill it with appropriate roles
private ClientHomesSelector homesSelector;
private boolean activated = false;
private PostgreConnectionPageAdvanced postgreConnectionPageAdvanced;

@Override
public void dispose() {
Expand Down Expand Up @@ -299,12 +301,19 @@ public void saveSettings(DBPDataSourceContainer dataSource) {

@Override
public IDialogPage[] getDialogPages(boolean extrasOnly, boolean forceCreate) {
return new IDialogPage[] {
new PostgreConnectionPageAdvanced(),
postgreConnectionPageAdvanced = new PostgreConnectionPageAdvanced();
return new IDialogPage[]{
postgreConnectionPageAdvanced,
new DriverPropertiesDialogPage(this)
};
}


@Nullable
@Override
public IDialogPage[] getRequiredDialogPages() {
return new IDialogPage[]{postgreConnectionPageAdvanced};
}

private void updateUrl() {
DBPDataSourceContainer dataSourceContainer = site.getActiveDataSource();
saveSettings(dataSourceContainer);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,17 @@ public interface IDialogPageProvider {
@Nullable
IDialogPage[] getDialogPages(boolean extrasOnly, boolean forceCreate);

/**
* Pages what should be saved during creation, even if they were
* never opened
*
* @return array of IDialogPage[] to create at the initialisation,
* null if no additional pages should be created.
*/
@Nullable
default IDialogPage[] getRequiredDialogPages() {
return null;
}


}

0 comments on commit 782a9e9

Please sign in to comment.