Example usage for org.eclipse.jface.viewers IStructuredContentProvider inputChanged

List of usage examples for org.eclipse.jface.viewers IStructuredContentProvider inputChanged

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers IStructuredContentProvider inputChanged.

Prototype

default public void inputChanged(Viewer viewer, Object oldInput, Object newInput) 

Source Link

Document

Notifies this content provider that the given viewer's input has been switched to a different element.

Usage

From source file:org.ebayopensource.turmeric.eclipse.ui.components.AbstractSOAServiceListViewer.java

License:Open Source License

/**
 * Creates the control./*from   w  w w.j a  v a2  s  .c o  m*/
 *
 * @param parent the parent
 * @param availableServices the available services
 * @return the composite
 * @throws CoreException the core exception
 */
public Composite createControl(final Composite parent, final Collection<EnvironmentItem> availableServices)
        throws CoreException {
    final Composite container = new Composite(parent, SWT.None);
    GridLayout layout = new GridLayout(1, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    container.setLayout(layout);
    container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));

    new Label(container, SWT.LEFT).setText("&Client Configurations:");

    Composite servicelistPanel = new Composite(container, SWT.NONE);
    layout = new GridLayout(2, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    servicelistPanel.setLayout(layout);
    servicelistPanel.setLayoutData(new GridData(GridData.FILL_BOTH));

    serviceList = new SOAConsumerServicesViewer(servicelistPanel, true, isZeroConfig);
    final Tree tree = serviceList.getTree();

    tree.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            Object obj = getSelectedObject();
            boolean selectEnv = obj instanceof EnvironmentItem;
            if (removeEnvButton != null) {
                removeEnvButton.setEnabled(selectEnv);
            }
            removeServiceButton.setEnabled(!selectEnv);
        }
    });
    serviceList.setInput(availableServices);

    final Composite buttonComposite = new Composite(servicelistPanel, SWT.None);
    buttonComposite.setLayout(new GridLayout(1, true));
    buttonComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL));

    if (isZeroConfig() == false) {
        addEnvButton = new Button(buttonComposite, SWT.PUSH);
        addEnvButton.setText("Add Environment...");
        final List<String> existingEnvs = SOAConsumerUtil.getClientEnvironmentList(project, null);
        addEnvButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                SOAClientConfigEnvironmentDialog dialog = new SOAClientConfigEnvironmentDialog(
                        UIUtil.getActiveShell(), getServiceInfoList(), existingEnvs);
                if (dialog.open() == Window.OK) {
                    List<EnvironmentItem> items = getServiceInfoList();
                    EnvironmentItem item = new EnvironmentItem(dialog.getEnvironmentName());
                    if (items.isEmpty() == false) {
                        //already has enviroment defined
                        item.setServiceData(items.get(0).getServiceData());
                        item.setServices(items.get(0).getServices());
                    }
                    items.add(item);
                    serviceList.setInput(items);
                    enviromentAdded(dialog.getEnvironmentName(), dialog.getCloneEnvironment());
                }
            }
        });

        removeEnvButton = new Button(buttonComposite, SWT.PUSH);
        removeEnvButton.setText("Remove Environment");
        removeEnvButton.setEnabled(false);
        removeEnvButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                Object obj = ((IStructuredSelection) serviceList.getSelection()).getFirstElement();
                if (obj instanceof EnvironmentItem) {
                    List<EnvironmentItem> items = getServiceInfoList();
                    items.remove(obj);
                    serviceList.setInput(items);
                    removeEnvButton.setEnabled(false);
                    environmentRemoved((EnvironmentItem) obj);
                }
            }
        });

        new Label(buttonComposite, SWT.NONE);
    }

    addServiceButton = new Button(buttonComposite, SWT.PUSH);
    addServiceButton.setText("&Add Service...");

    final SelectionListener selectionListener = new SelectionListener() {
        public void widgetDefaultSelected(final SelectionEvent e) {
            widgetSelected(e);
        }

        public void widgetSelected(final SelectionEvent e) {
            if (serviceList.getTree().getItemCount() == 0) {
                MessageDialog.openError(UIUtil.getActiveShell(), "Error",
                        "Please add an environment before adding services");
                return;
            }

            final DependenciesDialog dialog = new DependenciesDialog(UIUtil.getActiveShell(), "Select Service",
                    "Select services to create client", null, true, helpID) {
                @Override
                protected IStructuredContentProvider getContentProvider() {

                    final IStructuredContentProvider delegate = super.getContentProvider();
                    final IStructuredContentProvider provider = new IStructuredContentProvider() {
                        public Object[] getElements(final Object inputElement) {

                            // this should be all avaialbe services for the
                            // current repository system
                            if (allAvailableServiecs == null) {
                                final Object[] elements = delegate.getElements(inputElement);
                                allAvailableServiecs = new ConcurrentHashMap<String, ProjectInfo>(
                                        elements.length);
                                for (Object obj : elements) {
                                    if (obj instanceof ProjectInfo) {
                                        final ProjectInfo info = (ProjectInfo) obj;
                                        allAvailableServiecs.put(info.getDescription(), info);
                                    }
                                }
                            }
                            // Removing incompatible services due to service
                            // layer constraints.
                            final Collection<AssetInfo> includedServices = new ArrayList<AssetInfo>();
                            final List<EnvironmentItem> items = getServiceInfoList();
                            if (items.size() > 0) {
                                for (String serviceName : items.get(0).getServices()) {
                                    Loop: for (ProjectInfo info : allAvailableServiecs.values()) {
                                        if (info.equals(serviceName)) {
                                            includedServices.add(info);
                                            break Loop;
                                        }
                                    }
                                }
                            }

                            final Collection<AssetInfo> result = new ArrayList<AssetInfo>();
                            final ISOAAssetRegistry assetRegistry = GlobalRepositorySystem.instanceOf()
                                    .getActiveRepositorySystem().getAssetRegistry();
                            try {
                                if (project != null && TurmericServiceUtils.isSOAImplProject(project)) {
                                    //existing impl project
                                    //we should only show services which are compatible for the underlying service 
                                    final ISOAProject soaProject = assetRegistry.getSOAProject(project);
                                    if (soaProject instanceof SOAImplProject) {
                                        final SOAImplProject implProject = (SOAImplProject) soaProject;
                                        final SOAIntfMetadata metadata = implProject.getMetadata()
                                                .getIntfMetadata();
                                        final String layer = metadata.getServiceLayer();
                                        for (final ProjectInfo info : allAvailableServiecs.values()) {
                                            if (SOAServiceUtil.validateServiceLayer(layer,
                                                    info.getServiceLayer()) == true
                                                    && includedServices.contains(info) == false && metadata
                                                            .getServiceName().equals(info.getName()) == false)
                                                result.add(info);
                                        }
                                    }
                                } else {
                                    //It is a consumer or a new project, can consume any services which have valid layers
                                    for (final ProjectInfo info : allAvailableServiecs.values()) {
                                        if (SOAServiceUtil.isValidServiceLayer(info.getServiceLayer()) == true
                                                && includedServices.contains(info.getDescription()) == false) {
                                            if (isZeroConfig == false) {
                                                result.add(info);
                                            } else {
                                                final String assetLocation = assetRegistry
                                                        .getAssetLocation(info);
                                                final SOAIntfMetadata metadata = SOAIntfUtil
                                                        .loadIntfMetadata(assetLocation, info.getName());
                                                if (metadata.isZeroConfig()) {
                                                    result.add(info);
                                                }
                                            }

                                        }
                                    }
                                }
                            } catch (Exception e) {
                                SOALogger.getLogger().error(e);
                                UIUtil.showErrorDialog(e);
                                return result.toArray();
                            }

                            return result.toArray();
                        }

                        public void dispose() {
                            delegate.dispose();
                        }

                        public void inputChanged(final Viewer viewer, final Object oldInput,
                                final Object newInput) {
                            delegate.inputChanged(viewer, oldInput, newInput);
                        }
                    };
                    return provider;
                }
            };

            Set<AssetInfo> filteredServices = new HashSet<AssetInfo>();
            final Set<EnvironmentItem> currentServices = SetUtil.set(getServiceInfoList());
            if (currentServices.size() > 0) {
                for (Object obj : currentServices.iterator().next().getServiceData().values()) {
                    if (obj instanceof AssetInfo) {
                        filteredServices.add((AssetInfo) obj);
                    }
                }
            }

            try {
                if (project != null && TurmericServiceUtils.isSOAImplProject(project)) {
                    final ProjectInfo implProjectInfo = GlobalRepositorySystem.instanceOf()
                            .getActiveRepositorySystem().getAssetRegistry().getProjectInfo(project.getName());
                    filteredServices.add(implProjectInfo);
                }
            } catch (Exception e1) {
                SOALogger.getLogger().error(e1);
                UIUtil.showErrorDialog(e1);
                return;
            }

            dialog.setFilteredServices(filteredServices.toArray(new AssetInfo[0]));
            final List<Integer> statuses = new ArrayList<Integer>(1);
            final Runnable runnable = new Runnable() {
                public void run() {
                    statuses.add(dialog.open());
                }
            };
            BusyIndicator.showWhile(UIUtil.display(), runnable);
            if (statuses.isEmpty() || statuses.get(0) != Window.OK || dialog.getSelected().isEmpty())
                return;

            final Set<EnvironmentItem> services = SetUtil.set(getServiceInfoList());
            final Set<AssetInfo> addedServices = dialog.getSelected();
            if (services.isEmpty()) {
                services.add(new EnvironmentItem(SOAProjectConstants.DEFAULT_CLIENT_CONFIG_ENVIRONMENT));
            }
            for (EnvironmentItem item : services) {
                for (AssetInfo info : addedServices) {
                    item.addServiceData(info);
                }

            }

            serviceList.setInput(services);
            serviceAdded(addedServices);
        }
    };
    addServiceButton.addSelectionListener(selectionListener);

    removeServiceButton = new Button(buttonComposite, SWT.PUSH);
    removeServiceButton.setText("&Remove Service");
    removeServiceButton.setEnabled(false);
    final SelectionListener removeListener = new SelectionListener() {
        public void widgetDefaultSelected(final SelectionEvent e) {
            widgetSelected(e);
        }

        public void widgetSelected(final SelectionEvent e) {
            final List<EnvironmentItem> infos = getServiceInfoList();
            final Object selectedService = getSelectedObject();
            if (selectedService == null)
                return;
            for (EnvironmentItem item : infos) {
                if (selectedService instanceof AssetInfo) {
                    item.removeService(((AssetInfo) selectedService).getName());
                } else {
                    item.removeService(selectedService.toString());
                }
            }
            serviceList.setInput(infos);
            removeServiceButton.setEnabled(false);
            serviceRemoved(selectedService);
        }
    };
    removeServiceButton.addSelectionListener(removeListener);

    //calc proper width hint
    if (isZeroConfig() == false) {
        UIUtil.setEqualWidthHintForButtons(addEnvButton, removeEnvButton, addServiceButton,
                removeServiceButton);
    } else {
        UIUtil.setEqualWidthHintForButtons(addServiceButton, removeServiceButton);
    }
    return container;
}

From source file:org.eclipse.ui.internal.navigator.extensions.StructuredViewerManager.java

License:Open Source License

/**
 * //from   ww  w  .  j  ava2  s.c  o m
 * @param aContentProvider
 * @return True if all is well.
 */
public boolean initialize(final IStructuredContentProvider aContentProvider) {
    final boolean[] result = new boolean[1];
    SafeRunner.run(new NavigatorSafeRunnable() {
        public void run() throws Exception {
            if (aContentProvider != null) {
                aContentProvider.inputChanged(viewer, cachedOldInput, cachedNewInput);
            }
            result[0] = true;
        }
    });
    return result[0];
}

From source file:org.eclipsetrader.ui.internal.navigator.NavigatorContentProvider.java

License:Open Source License

@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    if (oldInput != null) {
        NavigatorView view = (NavigatorView) oldInput;
        for (IStructuredContentProvider contentProvider : view.getContentProviders()) {
            contentProvider.inputChanged(viewer, oldInput, newInput);
        }// w w  w .  ja  v  a2s .  c  om
        view.removeViewChangeListener(viewChangeListener);
    }

    this.viewer = (TreeViewer) viewer;

    if (newInput != null) {
        NavigatorView view = (NavigatorView) newInput;
        for (IStructuredContentProvider contentProvider : view.getContentProviders()) {
            contentProvider.inputChanged(viewer, oldInput, newInput);
        }
        view.addViewChangeListener(viewChangeListener);
    }
}

From source file:org.xmind.ui.gallery.GalleryViewer.java

License:Open Source License

public void setContentProvider(IStructuredContentProvider contentProvider) {
    IStructuredContentProvider oldContentProvider = this.contentProvider;
    this.contentProvider = contentProvider;
    if (oldContentProvider != null) {
        Object currentInput = getInput();
        oldContentProvider.inputChanged(this, currentInput, null);
        oldContentProvider.dispose();/*from   w  w w . j  a  v  a2 s  .  c o m*/
        contentProvider.inputChanged(this, null, currentInput);
        refresh();
    }
}

From source file:org.xmind.ui.gallery.GalleryViewer.java

License:Open Source License

@Override
protected void contentsChanged(Object input, Object oldInput) {
    IStructuredContentProvider content = getContentProvider();
    if (content != null) {
        content.inputChanged(this, oldInput, input);
    }/*from   w  w w  .j  a v a2 s  . co  m*/
    super.contentsChanged(input, oldInput);
}

From source file:org.xmind.ui.gallery.NavigationViewer.java

License:Open Source License

public void setContentProvider(IStructuredContentProvider contentProvider) {
    if (contentProvider == null || contentProvider == this.contentProvider)
        return;/*from ww w.j av  a2  s . com*/
    IStructuredContentProvider oldContentProvider = this.contentProvider;
    this.contentProvider = contentProvider;
    if (oldContentProvider != null) {
        oldContentProvider.dispose();
    }
    contentProvider.inputChanged(this, getInput(), getInput());
    refresh();
}