diff options
Diffstat (limited to 'extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dialogs/BrowseRepositoryDialog.java')
-rw-r--r-- | extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dialogs/BrowseRepositoryDialog.java | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dialogs/BrowseRepositoryDialog.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dialogs/BrowseRepositoryDialog.java index 26e09126832..f974c49aaf9 100644 --- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dialogs/BrowseRepositoryDialog.java +++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dialogs/BrowseRepositoryDialog.java @@ -31,7 +31,9 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.window.Window; import org.eclipse.net4j.util.event.IEvent; import org.eclipse.net4j.util.event.IListener; +import org.eclipse.net4j.util.ui.views.IElementFilter; import org.eclipse.osgi.util.NLS; +import org.eclipse.papyrus.cdo.core.IPapyrusRepository; import org.eclipse.papyrus.cdo.internal.core.CDOUtils; import org.eclipse.papyrus.cdo.internal.core.IInternalPapyrusRepository; import org.eclipse.papyrus.cdo.internal.core.PapyrusRepositoryManager; @@ -109,7 +111,7 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { this.message = message; this.style = checkStyle(style); - this.repository = PapyrusRepositoryManager.INSTANCE.getRepository(view); + this.repository = (view == null) ? null : PapyrusRepositoryManager.INSTANCE.getRepository(view); setHelpAvailable(false); } @@ -128,6 +130,7 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { newShell.addDisposeListener(new DisposeListener() { + @Override public void widgetDisposed(DisposeEvent e) { shellDisposed(); } @@ -135,8 +138,12 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { } private void shellDisposed() { - if((viewerRefresh != null) && (getRepository() != null)) { - getRepository().getMasterView().removeListener(viewerRefresh); + if(viewerRefresh != null) { + for(IInternalPapyrusRepository next : PapyrusRepositoryManager.INSTANCE.getRepositories()) { + if(next.isConnected()) { + next.getMasterView().removeListener(viewerRefresh); + } + } } } @@ -214,13 +221,15 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { tree = new TreeViewer(result, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); tree.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, isSaveStyle() ? 2 : 1, 1)); - ModelRepositoryItemProvider itemProvider = new ModelRepositoryItemProvider(null, getRepository()); + ModelRepositoryItemProvider itemProvider = (getRepository() == null) ? new ModelRepositoryItemProvider(null, showConnectedRepositories()) : new ModelRepositoryItemProvider(null, getRepository()); tree.setContentProvider(itemProvider); tree.setLabelProvider(new DecoratingLabelProvider(itemProvider, PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator())); tree.setSorter(itemProvider); - if(getRepository() != null) { - tree.setInput(PapyrusRepositoryManager.INSTANCE); - getRepository().getMasterView().addListener(getViewerRefresh()); + tree.setInput(PapyrusRepositoryManager.INSTANCE); + for(IInternalPapyrusRepository next : PapyrusRepositoryManager.INSTANCE.getRepositories()) { + if(next.isConnected()) { + next.getMasterView().addListener(getViewerRefresh()); + } } if(isSaveStyle()) { @@ -254,6 +263,7 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { tree.addSelectionChangedListener(new ISelectionChangedListener() { + @Override public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection)event.getSelection(); if(sel.isEmpty()) { @@ -273,6 +283,7 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { if(nameText != null) { nameText.addModifyListener(new ModifyListener() { + @Override public void modifyText(ModifyEvent e) { name = Strings.emptyToNull(nameText.getText().trim()); validateSelection(); @@ -283,6 +294,22 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { return result; } + private IElementFilter showConnectedRepositories() { + return new IElementFilter() { + + @Override + public boolean filter(Object element) { + boolean result = false; + + if(element instanceof IPapyrusRepository) { + result = ((IPapyrusRepository)element).isConnected(); + } + + return result; + } + }; + } + private void initializeSelection() { URI uri = getInitialURI(); CDOView view = getRepository().getMasterView(); @@ -384,6 +411,9 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { case EresourcePackage.CDO_FILE_RESOURCE: result = Messages.BrowseRepoDlg_fileKind; break; + case EresourcePackage.CDO_RESOURCE_LEAF: + result = Messages.BrowseRepoDlg_leafKind; + break; } } @@ -394,6 +424,7 @@ public class BrowseRepositoryDialog extends TitleAreaDialog { if(viewerRefresh == null) { viewerRefresh = new IListener() { + @Override public void notifyEvent(IEvent event) { if(event instanceof CDOViewInvalidationEvent) { if((getContents() != null) && !getContents().isDisposed()) { |