/** * Copyright (c) 2011, 2012 Gunnar Wagenknecht and others. * All rights reserved. * * This program and the accompanying materials are made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Gunnar Wagenknecht - initial API and implementation */ package org.eclipse.gyrex.admin.ui.p2.internal; // //import java.util.ArrayList; //import java.util.Collection; //import java.util.Iterator; // //import org.eclipse.gyrex.admin.ui.internal.databinding.TrueWhenListSelectionNotEmptyConverter; //import org.eclipse.gyrex.admin.ui.internal.forms.ViewerWithButtonsSectionPart; //import org.eclipse.gyrex.admin.ui.internal.helper.SwtUtil; //import org.eclipse.gyrex.cloud.internal.zk.IZooKeeperLayout; //import org.eclipse.gyrex.cloud.internal.zk.ZooKeeperGate; //import org.eclipse.gyrex.cloud.internal.zk.ZooKeeperMonitor; //import org.eclipse.gyrex.p2.internal.installer.PackageInstallerJob; // //import org.eclipse.core.databinding.DataBindingContext; //import org.eclipse.core.databinding.UpdateValueStrategy; //import org.eclipse.core.databinding.observable.value.IObservableValue; //import org.eclipse.core.runtime.IPath; //import org.eclipse.jface.databinding.swt.SWTObservables; //import org.eclipse.jface.databinding.viewers.ViewersObservables; //import org.eclipse.jface.dialogs.MessageDialog; //import org.eclipse.jface.layout.GridDataFactory; //import org.eclipse.jface.viewers.ArrayContentProvider; //import org.eclipse.jface.viewers.ListViewer; //import org.eclipse.swt.SWT; //import org.eclipse.swt.events.SelectionAdapter; //import org.eclipse.swt.events.SelectionEvent; //import org.eclipse.swt.widgets.Button; //import org.eclipse.swt.widgets.Composite; //import org.eclipse.swt.widgets.List; //import org.eclipse.ui.forms.IManagedForm; //import org.eclipse.ui.forms.widgets.ExpandableComposite; //import org.eclipse.ui.forms.widgets.Section; // //import org.apache.commons.lang.StringUtils; //import org.apache.zookeeper.KeeperException.NoNodeException; // ///** // * // */ //public class InstallStateSection extends ViewerWithButtonsSectionPart { // // /** APPEND */ // private static final IPath LOCKS_PATH = IZooKeeperLayout.PATH_LOCKS_DURABLE.append(PackageInstallerJob.ID_INSTALL_LOCK); // private Button cancelButton; // private ListViewer nodeList; // private final DataBindingContext bindingContext; // private IObservableValue selectedValue; // // final ZooKeeperMonitor monitor = new ZooKeeperMonitor() { // @Override // protected void childrenChanged(final String path) { // if (!getSection().isDisposed()) { // markStale(); // } // }; // }; // // /** // * Creates a new instance. // * // * @param parent // * @param page // */ // public InstallStateSection(final Composite parent, final SoftwareLandingPage page) { // super(parent, page.getManagedForm().getToolkit(), Section.DESCRIPTION | ExpandableComposite.TITLE_BAR); // bindingContext = page.getBindingContext(); // final Section section = getSection(); // section.setText("Active Installation"); // section.setDescription("Monitor the active install operations."); // createContent(section); // } // // void cancelButtonPressed() { // final Node node = getSelectedNode(); // if (node == null) { // return; // } // // if (!MessageDialog.openQuestion(SwtUtil.getShell(getSection()), "Cancel Installation", "Do you really want to cancel the installation?")) { // return; // } // // if (StringUtils.isNotBlank(node.getLockName())) { // try { // final ZooKeeperGate zk = ZooKeeperGate.get(); // zk.deletePath(LOCKS_PATH.append(node.getLockName())); // } catch (final Exception e) { // // ignore // } // } // markStale(); // } // // @Override // protected void createButtons(final Composite buttonsPanel) { // cancelButton = createButton(buttonsPanel, "Cancel", new SelectionAdapter() { // @Override // public void widgetSelected(final SelectionEvent e) { // cancelButtonPressed(); // } // }); // } // // @Override // protected void createViewer(final Composite parent) { // nodeList = new ListViewer(parent, getToolkit().getBorderStyle() | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL); // // final List list = nodeList.getList(); // getToolkit().adapt(list, true, true); // list.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create()); // // nodeList.setContentProvider(new ArrayContentProvider()); // nodeList.setLabelProvider(new P2UiLabelProvider()); // // selectedValue = ViewersObservables.observeSingleSelection(nodeList); // } // // private Object[] getActiveNodesInstallingStuff() { // // this is a hack // // we need to think about some official api for this // try { // final ZooKeeperGate zk = ZooKeeperGate.get(); // final Collection<String> locks = zk.readChildrenNames(LOCKS_PATH, monitor, null); // final ArrayList<Node> nodes = new ArrayList<Node>(); // for (final Iterator stream = locks.iterator(); stream.hasNext();) { // final String lock = (String) stream.next(); // final String record = zk.readRecord(LOCKS_PATH.append(lock), "", null); // if (StringUtils.isBlank(record)) { // continue; // } // final String[] segments = StringUtils.splitByWholeSeparator(record, "__"); // if (segments.length > 2) { // nodes.add(new Node(segments[0], segments[1], lock)); // } // } // return nodes.toArray(); // } catch (final NoNodeException e) { // return new Object[0]; // } catch (final IllegalStateException e) { // return new Object[0]; // } catch (final InterruptedException e) { // return new Object[0]; // } catch (final Exception e) { // return new Object[] { new Node(e.getClass().getSimpleName(), e.getMessage(), null) }; // } // } // // /** // * Returns the bindingContext. // * // * @return the bindingContext // */ // public DataBindingContext getBindingContext() { // return bindingContext; // } // // private Node getSelectedNode() { // return (Node) (null != selectedValue ? selectedValue.getValue() : null); // } // // @Override // public void initialize(final IManagedForm form) { // super.initialize(form); // // final UpdateValueStrategy modelToTarget = new UpdateValueStrategy(); // modelToTarget.setConverter(new TrueWhenListSelectionNotEmptyConverter()); // getBindingContext().bindValue(SWTObservables.observeEnabled(cancelButton), SWTObservables.observeSelection(nodeList.getControl()), new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), modelToTarget); // } // // @Override // public void refresh() { // nodeList.setInput(getActiveNodesInstallingStuff()); // super.refresh(); // } // //}