use of org.jkiss.dbeaver.model.connection.DBPNativeClientLocationManager in project dbeaver by serge-rider.
the class ClientHomesSelector method populateHomes.
public void populateHomes(DBPDriver driver, String currentHome, boolean selectDefault) {
this.driver = driver;
this.currentHomeId = currentHome;
this.homesCombo.removeAll();
this.homeIds.clear();
Map<String, DBPNativeClientLocation> homes = new LinkedHashMap<>();
AbstractJob hlJob = new AbstractJob("Find native client homes") {
@Override
protected IStatus run(DBRProgressMonitor monitor) {
for (DBPNativeClientLocation ncl : driver.getNativeClientLocations()) {
homes.put(ncl.getName(), ncl);
}
DBPNativeClientLocationManager clientManager = driver.getNativeClientManager();
if (clientManager != null) {
for (DBPNativeClientLocation location : clientManager.findLocalClientLocations()) {
homes.putIfAbsent(location.getName(), location);
}
}
return Status.OK_STATUS;
}
};
hlJob.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
UIUtils.syncExec(() -> {
for (DBPNativeClientLocation location : homes.values()) {
homesCombo.add(location.getDisplayName());
homeIds.add(location.getName());
if (currentHomeId != null && location.getName().equals(currentHomeId)) {
homesCombo.select(homesCombo.getItemCount() - 1);
}
}
if (homesCombo.getItemCount() == 0) {
homesCombo.add(UIConnectionMessages.controls_client_home_selector_missing);
homeIds.add(null);
}
if (selectDefault && homesCombo.getSelectionIndex() == -1) {
homesCombo.select(0);
currentHomeId = homeIds.get(0);
}
homesCombo.add(UIConnectionMessages.controls_client_home_selector_browse);
displayClientVersion();
homesCombo.setEnabled(true);
});
super.done(event);
}
});
hlJob.schedule();
}
use of org.jkiss.dbeaver.model.connection.DBPNativeClientLocationManager in project dbeaver by serge-rider.
the class ClientHomesPanel method selectHome.
private void selectHome(HomeInfo home) {
removeButton.setEnabled(home != null && !home.isProvided);
// $NON-NLS-1$
idText.setText(home == null ? "" : CommonUtils.notEmpty(home.location.getName()));
// $NON-NLS-1$
pathText.setText(home == null ? "" : home.location.getPath().getAbsolutePath());
// $NON-NLS-1$
nameText.setText(home == null ? "" : CommonUtils.notEmpty(home.location.getDisplayName()));
if (home != null && !home.isValidated) {
try {
UIUtils.runInProgressDialog(monitor -> {
try {
home.location.validateFilesPresence(monitor);
home.isValidated = true;
} catch (DBException e) {
throw new InvocationTargetException(e);
}
});
} catch (InvocationTargetException e) {
DBWorkbench.getPlatformUI().showError("Client download", "Failed to download client files", e.getTargetException());
}
}
DBPNativeClientLocationManager nativeClientLocationManager = driver.getNativeClientManager();
if (nativeClientLocationManager != null) {
// $NON-NLS-1$
productNameText.setText(home == null ? "" : CommonUtils.notEmpty(nativeClientLocationManager.getProductName(home.location)));
// $NON-NLS-1$
productVersionText.setText(home == null ? "" : CommonUtils.notEmpty(nativeClientLocationManager.getProductVersion(home.location)));
}
}
use of org.jkiss.dbeaver.model.connection.DBPNativeClientLocationManager in project dbeaver by serge-rider.
the class ClientHomesPanel method addClientHome.
private void addClientHome() {
DirectoryDialog directoryDialog = new DirectoryDialog(getShell());
if (lastHomeDirectory != null) {
directoryDialog.setFilterPath(lastHomeDirectory);
}
String homeId = directoryDialog.open();
if (homeId == null) {
return;
}
lastHomeDirectory = homeId;
DBPNativeClientLocationManager clientManager = driver.getNativeClientManager();
if (clientManager != null) {
createHomeItem(clientManager, new LocalNativeClientLocation(homeId, homeId), false);
}
}
use of org.jkiss.dbeaver.model.connection.DBPNativeClientLocationManager in project dbeaver by dbeaver.
the class ClientHomesPanel method loadHomes.
public void loadHomes(DBPDriver driver) {
homesTable.removeAll();
this.driver = driver;
selectHome(null);
DBPNativeClientLocationManager clientManager = this.driver.getNativeClientManager();
if (clientManager == null) {
// $NON-NLS-1$ //$NON-NLS-2$
log.debug("Client manager is not supported by driver '" + driver.getName() + "'");
}
Set<DBPNativeClientLocation> providedHomes = new LinkedHashSet<>();
if (clientManager != null) {
providedHomes.addAll(clientManager.findLocalClientLocations());
}
Set<DBPNativeClientLocation> allHomes = new LinkedHashSet<>();
allHomes.addAll(driver.getNativeClientLocations());
allHomes.addAll(providedHomes);
for (DBPNativeClientLocation home : allHomes) {
TableItem item = createHomeItem(clientManager, home, home instanceof RemoteNativeClientLocation || providedHomes.contains(home));
if (item != null) {
HomeInfo homeInfo = (HomeInfo) item.getData();
if (homeInfo.isDefault) {
homesTable.setSelection(homesTable.indexOf(item));
selectHome(homeInfo);
}
}
}
}
use of org.jkiss.dbeaver.model.connection.DBPNativeClientLocationManager in project dbeaver by dbeaver.
the class ClientHomesPanel method selectHome.
private void selectHome(HomeInfo home) {
removeButton.setEnabled(home != null && !home.isProvided);
// $NON-NLS-1$
idText.setText(home == null ? "" : CommonUtils.notEmpty(home.location.getName()));
// $NON-NLS-1$
pathText.setText(home == null ? "" : home.location.getPath().getAbsolutePath());
// $NON-NLS-1$
nameText.setText(home == null ? "" : CommonUtils.notEmpty(home.location.getDisplayName()));
if (home != null && !home.isValidated) {
try {
UIUtils.runInProgressDialog(monitor -> {
try {
home.location.validateFilesPresence(monitor);
home.isValidated = true;
} catch (DBException e) {
throw new InvocationTargetException(e);
}
});
} catch (InvocationTargetException e) {
DBWorkbench.getPlatformUI().showError("Client download", "Failed to download client files", e.getTargetException());
}
}
DBPNativeClientLocationManager nativeClientLocationManager = driver.getNativeClientManager();
if (nativeClientLocationManager != null) {
// $NON-NLS-1$
productNameText.setText(home == null ? "" : CommonUtils.notEmpty(nativeClientLocationManager.getProductName(home.location)));
// $NON-NLS-1$
productVersionText.setText(home == null ? "" : CommonUtils.notEmpty(nativeClientLocationManager.getProductVersion(home.location)));
}
}
Aggregations