components/visual-panels/smf/src/java/vpanels/app/svcs/com/oracle/solaris/vp/panels/svcs/client/swing/SvcsPanelDescriptor.java
changeset 827 0944d8c0158b
child 1410 ca9946e5736c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/visual-panels/smf/src/java/vpanels/app/svcs/com/oracle/solaris/vp/panels/svcs/client/swing/SvcsPanelDescriptor.java	Thu May 24 04:16:47 2012 -0400
@@ -0,0 +1,158 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ */
+
+package com.oracle.solaris.vp.panels.svcs.client.swing;
+
+import java.beans.PropertyChangeListener;
+import java.io.IOException;
+import java.util.*;
+import javax.management.InstanceNotFoundException;
+import com.oracle.solaris.vp.panel.common.*;
+import com.oracle.solaris.vp.panel.common.control.*;
+import com.oracle.solaris.vp.panel.common.model.*;
+import com.oracle.solaris.vp.panel.common.smf.*;
+import com.oracle.solaris.vp.panel.swing.control.PanelFrameControl;
+import com.oracle.solaris.vp.panel.swing.model.SwingPanelDescriptor;
+import com.oracle.solaris.vp.util.misc.finder.Finder;
+import com.oracle.solaris.vp.util.misc.predicate.TruePredicate;
+
+/**
+ * Panel descriptor for the Swing SMF panel
+ */
+public class SvcsPanelDescriptor
+    extends AbstractPanelDescriptor<InstanceManagedObject>
+    implements SwingPanelDescriptor<InstanceManagedObject> {
+
+    private DefaultControl control_;
+
+    private List<InstanceFilter> filterList_ = new LinkedList<InstanceFilter>();
+    private RepoManagedObject repo_;
+
+    private InstanceStatistics stats_;
+    final PropertyChangeListener statusListener_ =
+	new PropertyChangeForwarder(this);
+
+    @SuppressWarnings({"unchecked"})
+    public SvcsPanelDescriptor(String id, ClientContext context)
+	throws InstanceNotFoundException, IOException, TrackerException {
+
+	super(id, context);
+
+	repo_ = new RepoManagedObject("repo", context);
+	stats_ = new InstanceStatistics(repo_);
+	stats_.addPropertyChangeListener(statusListener_);
+
+	filterList_.add(new InstanceFilter("all", repo_,
+	    Finder.getString("smf.instances.selection.all"),
+	    TruePredicate.getInstance()));
+	filterList_.add(new InstanceFilter("enabled", repo_,
+	    Finder.getString("smf.instances.selection.enabled"),
+	    new EnabledInstancePredicate()));
+	filterList_.add(new InstanceFilter("unhealthy", repo_,
+	    Finder.getString("smf.instances.selection.unhealthy"),
+	    new UnhealthyInstancePredicate()));
+
+	control_ = new PanelFrameControl<SvcsPanelDescriptor>(this);
+	control_.addChildren(new SvcsControl(this));
+    }
+
+    //
+    // ManagedObject methods
+    //
+
+    @Override
+    public void dispose() {
+	repo_.dispose();
+	super.dispose();
+    }
+
+    @Override
+    public String getName()
+    {
+	return (Finder.getString("smf.panel.name"));
+    }
+
+    @Override
+    public String getStatusText()
+    {
+	return (stats_.getStatusText());
+    }
+
+    @Override
+    public ManagedObjectStatus getStatus()
+    {
+	return (stats_.getStatus());
+    }
+
+    //
+    // PanelDescriptor methods
+    //
+
+    @Override
+    public Control getControl() {
+	return control_;
+    }
+
+    @Override
+    public boolean getHasFullPrivileges()
+    {
+	return (getClientContext().getConnectionInfo().getUser().
+	    equals("root"));
+    }
+
+    //
+    // SvcsPanelDescriptor methods
+    //
+
+    public ManagedObject<InstanceManagedObject> getInstances()
+    {
+	return repo_;
+    }
+
+    public SmfManagedObject getSMO(String fmri)
+    {
+	return (repo_.getSMO(fmri));
+    }
+
+
+    boolean hasInstance(String service)
+    {
+	return (repo_.hasInstance(service));
+    }
+
+    public InstanceFilter getFilter(String filterName)
+    {
+	for (InstanceFilter f : filterList_)
+	    if (f.getId().equals(filterName))
+		return (f);
+
+	return (null);
+    }
+
+    public List<InstanceFilter> getFilters()
+    {
+	return (filterList_);
+    }
+}