package org.simantics.db.procore.ui; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.simantics.db.DatabaseUserAgent; import org.simantics.db.exception.InternalException; import org.simantics.db.procore.ProCoreDriver; public final class ProCoreUserAgent implements DatabaseUserAgent { private static Shell getShell() { Shell shell = null; Display d = getDisplay(); if (d == null) return null; shell = d.getActiveShell(); if (null == shell) { Shell[] shells = d.getShells(); if (null != shells && shells.length > 0) shell = shells[0]; } return shell; } private static Display getDisplay() { Display d = Display.getCurrent(); if (d == null) d = Display.getDefault(); return d; } @Override public boolean handleStart(InternalException exception) { Shell shell = getShell(); if (null == shell) return false; // no can do try { return Auxiliary.handleStart(shell, exception); } catch (InternalException e) { return false; // no could do } } @Override public String getId() { return ProCoreDriver.ProCoreDriverName; } }