You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/08/30 17:03:03 UTC
svn commit: r438510 [4/5] - in
/incubator/harmony/enhanced/tools/trunk/jmx_console: ./ doc/ doc/Images/
make/ src/ src/icons/ src/org/ src/org/apache/ src/org/apache/harmony/
src/org/apache/harmony/x/ src/org/apache/harmony/x/management/
src/org/apache...
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeListener.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeListener.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeListener.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeListener.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,37 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Widget;
+
+public class MBeanTreeListener extends SelectionAdapter {
+
+ IMBeanTreeDependant view;
+
+ MBeanTreeListener(IMBeanTreeDependant view) {
+ this.view = view;
+ }
+
+ public void widgetSelected(SelectionEvent event) {
+ Widget item = event.item;
+ view.redraw((MBeanTreeNode)item.getData());
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeNode.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeNode.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeNode.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeNode.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,59 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import java.util.Vector;
+
+public class MBeanTreeNode {
+ boolean isSubscribed;
+
+ Vector notifications;
+ String name;
+
+ public MBeanTreeNode(String name) {
+ isSubscribed = false;
+ this.name = name;
+ }
+
+ public void setSubscribed(boolean val) {
+ isSubscribed = val;
+ if (val) {
+ notifications = new Vector();
+ } else {
+ notifications = null;
+ }
+ }
+
+ public boolean getSubscribed() {
+ return isSubscribed;
+ }
+
+ public Vector getNotifications() {
+ return notifications;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+
+ public String toString() {
+ return "MBeanTreeNode{"+name+"}";
+ }
+}
\ No newline at end of file
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeNode.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeView.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeView.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeView.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeView.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,212 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+public class MBeanTreeView extends ViewPart {
+
+ public static final String ID = "org.apache.harmony.x.management.console.plugin.view.mbeantree";
+
+ private Tree mbean_TREE = null;
+
+ private Composite parent = null;
+
+ /*
+ * Icons and images.
+ */
+ static Image mainIcon = null;
+
+ static Image errorIcon = null;
+
+ static Image resultIcon = null;
+
+ static Image connectIcon = null;
+
+ static MBeanTreeView instance;
+ private TreeItem root;
+
+ public MBeanTreeView() {
+ super();
+ instance = this;
+ OutputView.print("MBeanTreeView.<init>");
+ }
+
+ class ViewLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+ public String getColumnText(Object obj, int index) {
+ return getText(obj);
+ }
+
+ public Image getColumnImage(Object obj, int index) {
+ return getImage(obj);
+ }
+
+ public Image getImage(Object obj) {
+ return PlatformUI.getWorkbench().getSharedImages().getImage(
+ ISharedImages.IMG_OBJ_ELEMENT);
+ }
+ }
+
+ /**
+ * This is a callback that will allow us to create the viewer and initialize
+ * it.
+ */
+ public void createPartControl(Composite parent) {
+
+ this.parent=parent;
+
+ OutputView.print("MBeanTreeView.createPartControl: started");
+ Conn.setMBeanTreeView(this);
+ parent.setLayout(new FillLayout());
+
+ parent.addDisposeListener( new DisposeListener() {
+
+ public void widgetDisposed(DisposeEvent e) {
+ OutputView.print("MBeanTreeView was disposed.");
+ Conn.setMBeanTreeView(null);
+ }
+ });
+
+ mbean_TREE = new Tree(parent, SWT.NONE);
+ mbean_TREE.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent event) {
+
+ if(Conn.DEBUG) {
+ OutputView.print("Event on MBean Tree: "+event);
+ }
+
+ TreeItem treeItem = (TreeItem) event.item;
+ MBeanTreeNode node = (MBeanTreeNode) treeItem.getData();
+
+ if(Conn.DEBUG) {
+ OutputView.print("selected node: "+node);
+ }
+
+ if (node == null) {
+ return;
+ }
+
+ Conn.setActiveNode(node);
+
+ updateDependViewList();
+ }
+ });
+
+ root = new TreeItem(mbean_TREE, SWT.NONE);
+
+ fill();
+ }
+
+ void fill() {
+
+ //Tools.cleanComposite(parent);
+
+ root.removeAll();
+
+ mbean_TREE.setVisible(true);
+
+ root.setText(Conn.getStatus());
+
+ if(Conn.getMode() == Conn.NOT_CONNECTED) {
+ return;
+ }
+
+ /*
+ * Retrieving the domains.
+ */
+ String[] domains = null;
+
+ try {
+ domains = Conn.getMBeanOperations().getAllDomains();
+ } catch (Exception e) {
+ Tools.fireErrorDialog(parent, e);
+ e.printStackTrace();
+ return;
+ }
+
+
+ for (int i = 0; i < domains.length; i++) {
+
+ String[] mbeans = null;
+
+ try {
+ mbeans = Conn.getMBeanOperations().getMBeansOfDomain(domains[i]);
+ } catch (Exception e) {
+ Tools.fireErrorDialog(parent, e);
+ e.printStackTrace();
+ return;
+ }
+
+ TreeItem domain_TRI = new TreeItem(root, SWT.NULL);
+
+ domain_TRI.setText(domains[i]);
+
+ for (int j = 0; j < mbeans.length; j++) {
+ TreeItem mbean_TRI = new TreeItem(domain_TRI, SWT.NULL);
+ mbean_TRI.setText(mbeans[j]);
+ MBeanTreeNode node = new MBeanTreeNode(mbeans[j]);
+ mbean_TRI.setData(node);
+ }
+ }
+
+ /* Refresh all components */
+ parent.layout();
+ }
+ /*
+ */
+ public void setFocus() {
+ // treeViewer.getControl().setFocus();
+ }
+
+ private void updateDependViewList() {
+ IMBeanTreeDependant views[] = Conn.getViews();
+
+ if(Conn.DEBUG) {
+ OutputView.print("UpdateDependViewList: views length="+views.length);
+ }
+
+ for(int i=0; i < views.length; i++) {
+
+ Composite parent = views[i].getParent();
+ if(parent.isDisposed()) {
+ mbean_TREE.removeSelectionListener(views[i].getMBeanTreeListener());
+ Conn.removeView(views[i]);
+ } else if(!views[i].getSubscribed()){
+ mbean_TREE.addSelectionListener(views[i].getMBeanTreeListener());
+ views[i].setSubscribed(true);
+ }
+ }
+ }
+}
\ No newline at end of file
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/MBeanTreeView.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Menu.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Menu.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Menu.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Menu.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,40 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+
+public class Menu implements IWorkbenchWindowActionDelegate {
+
+ public void dispose() {
+ }
+
+ public void init(IWorkbenchWindow window) {
+ }
+
+ public void run(IAction action) {
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+}
\ No newline at end of file
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Menu.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/NotificationView.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/NotificationView.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/NotificationView.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/NotificationView.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,266 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Vector;
+
+import javax.management.Notification;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+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.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.part.ViewPart;
+
+
+public class NotificationView extends ViewPart implements IMBeanTreeDependant {
+
+ public static final String ID = "org.apache.harmony.x.management.console.plugin.view.notification";
+
+ /*
+ * The Hashtable containing notifications sent by MBeans.
+ * key - MBean Name (String)
+ * value - Vector of notifications
+ */
+ private Hashtable notifications_H = new Hashtable();
+
+ private Table notifications_TABLE = null;
+
+ private Composite notifications_COMPOSITE = null;
+
+ private Button subscribe_BUTTON = null;
+
+ private Button clear_BUTTON = null;
+
+ private Button update_BUTTON = null;
+
+ Composite parent = null;
+
+ private MBeanTreeNode node = null;
+
+ private boolean subscribed;
+
+ public void createPartControl(Composite parent) {
+
+ Conn.addView(this);
+
+ this.parent = parent;
+ /*
+ * The Composite containing table of notifications caught and Subscribe/Unsubscribe of notifications.
+ */
+ notifications_COMPOSITE = new Composite(parent, SWT.NONE);
+
+ notifications_TABLE = new Table(notifications_COMPOSITE, SWT.BORDER);
+
+ notifications_TABLE.setHeaderVisible(true);
+ notifications_TABLE.setLinesVisible(true);
+
+ notifications_TABLE.pack();
+
+ subscribe_BUTTON = new Button(notifications_COMPOSITE, SWT.CHECK);
+ subscribe_BUTTON.setText("Subscribe");
+ subscribe_BUTTON
+ .setToolTipText("Subscribe/Unsubscribe to notifications of current MBean");
+ final Composite fParent = parent;
+ subscribe_BUTTON.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+
+
+ try {
+ Button button = (Button) event.widget;
+
+ if (button.getSelection()) {
+ Conn.getNotificationHandler().subscribe(node.getName());
+ notifications_H.put(node.getName(), new Vector());
+ update_BUTTON.setEnabled(true);
+ clear_BUTTON.setEnabled(true);
+ node.setSubscribed(true);
+ } else {
+ Conn.getNotificationHandler().unsubscribe(node.getName());
+ notifications_H.put(node.getName(), new Vector());
+ update_BUTTON.setEnabled(false);
+ clear_BUTTON.setEnabled(false);
+ node.setSubscribed(false);
+ }
+ } catch (Exception exc) {
+ subscribe_BUTTON.setSelection(false);
+ Tools.fireErrorDialog(fParent, exc);
+ exc.printStackTrace();
+ return;
+ }
+ }
+ });
+
+ clear_BUTTON = new Button(notifications_COMPOSITE, SWT.PUSH);
+ update_BUTTON = new Button(notifications_COMPOSITE, SWT.PUSH);
+
+ clear_BUTTON.setEnabled(false);
+ update_BUTTON.setEnabled(false);
+
+ clear_BUTTON.setText("Clear List");
+ clear_BUTTON.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent arg0) {
+
+ notifications_TABLE.removeAll();
+ node.getNotifications().removeAllElements();
+ }
+ });
+
+ update_BUTTON.setText("Update");
+
+ update_BUTTON.addSelectionListener(new SelectionAdapter() {
+
+ public synchronized void widgetSelected(SelectionEvent arg0) {
+
+ Vector new_notifications = null;
+
+ try {
+ new_notifications =
+ Conn.getNotificationHandler().getNotifications(node.getName());
+ } catch (Exception exc) {
+ Tools.fireErrorDialog(fParent, exc);
+ exc.printStackTrace();
+ return;
+ }
+
+ node.getNotifications().addAll(new_notifications);
+ refillNotificationTable(notifications_TABLE, node);
+ }
+ });
+
+ final TableColumn source_TCOL = new TableColumn(notifications_TABLE,
+ SWT.NONE);
+ final TableColumn message_TCOL = new TableColumn(notifications_TABLE,
+ SWT.NONE);
+ final TableColumn sequence_number_TCOL = new TableColumn(
+ notifications_TABLE, SWT.NONE);
+ final TableColumn time_stamp_TCOL = new TableColumn(
+ notifications_TABLE, SWT.NONE);
+ final TableColumn type_TCOL = new TableColumn(notifications_TABLE,
+ SWT.NONE);
+ final TableColumn user_data_TCOL = new TableColumn(notifications_TABLE,
+ SWT.NONE);
+
+ source_TCOL.setText("Source");
+ message_TCOL.setText("Message");
+ sequence_number_TCOL.setText("Sequence Number");
+ time_stamp_TCOL.setText("Time Stamp");
+ type_TCOL.setText("Type");
+ user_data_TCOL.setText("User Data");
+
+ notifications_COMPOSITE.addPaintListener(new PaintListener() {
+
+ public void paintControl(PaintEvent e) {
+ int w = notifications_COMPOSITE.getSize().x;
+ int h = notifications_COMPOSITE.getSize().y;
+
+ notifications_TABLE.setBounds(0, 0, w, h - 50);
+
+ source_TCOL.setWidth(w / 6);
+ message_TCOL.setWidth(w / 6);
+ sequence_number_TCOL.setWidth(w / 6);
+ time_stamp_TCOL.setWidth(w / 6);
+ type_TCOL.setWidth(w / 6);
+ user_data_TCOL.setWidth(w / 6);
+ subscribe_BUTTON.setBounds(w - 300, h - 40, 70, 30);
+ clear_BUTTON.setBounds(w - 150, h - 40, 70, 30);
+ update_BUTTON.setBounds(w - 75, h - 40, 70, 30);
+ }
+ });
+
+ }
+
+ public void setFocus() {
+
+ }
+
+ private void refillNotificationTable(Table notifications_TABLE, MBeanTreeNode node) {
+
+ boolean subscribed = node.getSubscribed();
+ subscribe_BUTTON.setSelection(subscribed);
+
+ if(!subscribed) {
+ clear_BUTTON.setEnabled(false);
+ update_BUTTON.setEnabled(false);
+ return;
+ }
+ else {
+ clear_BUTTON.setEnabled(true);
+ update_BUTTON.setEnabled(true);
+ }
+
+ notifications_TABLE.removeAll();
+
+ Vector notifications = (Vector) node.getNotifications();
+
+ if (notifications == null) {
+ return;
+ }
+
+ Iterator iter = notifications.iterator();
+
+ while (iter.hasNext()) {
+ Notification notification = (Notification) iter.next();
+ String[] fields = new String[6];
+ fields[0] = notification.getSource() + "";
+ fields[1] = notification.getMessage();
+ fields[2] = notification.getSequenceNumber() + "";
+ fields[3] = notification.getTimeStamp() + "";
+ fields[4] = notification.getType();
+ fields[5] = notification.getUserData() + "";
+
+ TableItem ti = new TableItem(notifications_TABLE, SWT.NONE);
+ ti.setText(fields);
+ }
+ }
+
+ public void redraw(MBeanTreeNode node) {
+
+ if (node == null) {
+ return;
+ }
+
+ refillNotificationTable(notifications_TABLE, node);
+ }
+
+ public Composite getParent() {
+ return parent;
+ }
+
+ public MBeanTreeListener getMBeanTreeListener() {
+ return new MBeanTreeListener(this);
+ }
+
+ public boolean getSubscribed() {
+ return subscribed;
+ }
+
+ public void setSubscribed(boolean val) {
+ subscribed = val;
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/NotificationView.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OperationView.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OperationView.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OperationView.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OperationView.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,227 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import java.util.List;
+
+import org.apache.harmony.x.management.console.controller.OperationInfo;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.part.ViewPart;
+
+public class OperationView extends ViewPart implements IMBeanTreeDependant {
+
+ public static final String ID = "org.apache.harmony.x.management.console.plugin.view.operation";
+
+ private ScrolledComposite ops_SCROLLCOMPOSITE = null;
+
+ private Composite ops_COMPOSITE = null;
+
+ Composite parent;
+
+ private MBeanTreeListener listener;
+ private boolean subscribed;
+
+ public OperationView () {
+ super();
+ OutputView.print("OperationView.<init>");
+ listener = new MBeanTreeListener(this);
+ }
+
+
+ public void createPartControl(Composite parent) {
+ /*
+ * The Composite containing operations.
+ */
+ Conn.addView(this);
+ this.parent = parent;
+ redraw(null);
+ }
+
+ public void setFocus() {
+ //This section was intentionally left empty
+ }
+
+ public void redraw(final MBeanTreeNode activeNode) {
+
+ Tools.cleanComposite(parent);
+
+ if(Conn.getMode() == Conn.NOT_CONNECTED) {
+ new Label(parent, SWT.NONE).setText(Conn.getStatus());
+ return;
+ }
+
+ List list = null;
+
+ int min_width = 0;
+ int min_height = 0;
+
+ ops_SCROLLCOMPOSITE = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
+
+ ops_SCROLLCOMPOSITE.setMinSize(600, 600);
+ ops_SCROLLCOMPOSITE.setExpandHorizontal(true);
+ ops_SCROLLCOMPOSITE.setExpandVertical(true);
+
+ ops_COMPOSITE = new Composite(ops_SCROLLCOMPOSITE, SWT.NONE);
+ ops_COMPOSITE.setLayout(new GridLayout(1, false));
+
+ ops_SCROLLCOMPOSITE.setContent(ops_COMPOSITE);
+
+ if(activeNode == null || activeNode.getName() == null) {
+ new Label(ops_COMPOSITE, SWT.NONE).setText("No operations available");
+ ops_COMPOSITE.layout(true);
+ ops_SCROLLCOMPOSITE.layout(true);
+ parent.layout(true);
+ return;
+ }
+
+ try {
+ list = Conn.getMBeanOperations().listOperations(activeNode.getName());
+ } catch (Exception e) {
+ Tools.fireErrorDialog(parent, e);
+ e.printStackTrace();
+ return;
+ }
+
+ OperationInfo ops_info[] = (OperationInfo[]) list
+ .toArray(new OperationInfo[0]);
+
+ if (ops_info.length == 0) {
+ new Label(ops_COMPOSITE, SWT.NONE)
+ .setText("No operations available.");
+ }
+
+ for (int i = 0; i < ops_info.length; i++) {
+
+ if (i != 0) {
+ Label separator_LABEL = new Label(ops_COMPOSITE, SWT.SEPARATOR
+ | SWT.HORIZONTAL);
+ separator_LABEL.setSize(320, 10);
+ }
+
+ Composite op_row_COMPOSITE = new Composite(ops_COMPOSITE, SWT.NONE);
+ op_row_COMPOSITE.setLayout(new GridLayout(3, false));
+
+ Label return_type_method_LABEL = new Label(op_row_COMPOSITE,
+ SWT.NONE);
+ return_type_method_LABEL.setText(ops_info[i].getReturnType() + " "
+ + ops_info[i].getName() + "(");
+ return_type_method_LABEL
+ .setToolTipText("The name and the return value of operation");
+
+ final String[] signature = ops_info[i].getSign();
+
+ if (signature.length != 0) {
+ new Label(op_row_COMPOSITE, SWT.NONE);
+ new Label(op_row_COMPOSITE, SWT.NONE);
+ }
+ final Text vals_TEXT[] = new Text[signature.length];
+
+ for (int j = 0; j < signature.length; j++) {
+
+ Label type_LABEL = new Label(op_row_COMPOSITE, SWT.NONE);
+ type_LABEL.setText(" " + signature[j] + ":");
+ vals_TEXT[j] = new Text(op_row_COMPOSITE, SWT.BORDER);
+ vals_TEXT[j].setToolTipText("Edit the parameter");
+
+ if (j != (signature.length - 1)) {
+ new Label(op_row_COMPOSITE, SWT.NONE).setText(", ");
+ }
+ }
+
+ Label parenthesis_r_LABEL = new Label(op_row_COMPOSITE, SWT.NONE);
+ parenthesis_r_LABEL.setAlignment(SWT.CENTER);
+ parenthesis_r_LABEL.setText(")");
+
+ Button invoke_operation_BUTTON = new Button(op_row_COMPOSITE,
+ SWT.NONE);
+ invoke_operation_BUTTON.setText("Invoke");
+ invoke_operation_BUTTON
+ .setToolTipText("Invokes the named operation");
+
+ op_row_COMPOSITE.pack();
+
+ int w = op_row_COMPOSITE.getSize().x;
+ int h = op_row_COMPOSITE.getSize().y;
+
+ min_width = (w > min_width) ? w : min_width;
+ min_height += h;
+
+ ops_SCROLLCOMPOSITE.setMinSize(min_width, min_height);
+
+ final String operation = ops_info[i].getName();
+ invoke_operation_BUTTON
+ .addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ String[] vals = new String[signature.length];
+
+ for (int j = 0; j < signature.length; j++) {
+ vals[j] = vals_TEXT[j].getText();
+ }
+
+ Object result = null;
+
+ try {
+ OutputView.print("<< Invoking operation >>");
+ OutputView.print("MBean="
+ + activeNode.getName() + ", op="
+ + operation + ", vals=" + vals
+ + ", signature=" + signature);
+ result = Conn.getMBeanOperations().execute(
+ activeNode.getName(), operation,
+ vals, signature);
+ } catch (Exception exc) {
+ Tools.fireErrorDialog(parent, exc);
+ OutputView.print(exc);
+ return;
+ }
+
+ new ResultDialog(parent, activeNode.getName(), operation, vals, result);
+ }
+ });
+ }
+
+
+ parent.layout(true);
+}
+
+ public Composite getParent() {
+ return parent;
+ }
+
+ public MBeanTreeListener getMBeanTreeListener() {
+ return listener;
+ }
+
+
+ public boolean getSubscribed() {
+ return subscribed;
+ }
+
+ public void setSubscribed(boolean val) {
+ subscribed = val;
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OperationView.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OutputView.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OutputView.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OutputView.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OutputView.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,105 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.Vector;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * This view is designed to hold debug information that is printed by the console.
+ *
+ * @author Victor A. Martynov
+ */
+public class OutputView extends ViewPart {
+
+ public static final String ID = "org.apache.harmony.x.management.console.plugin.view.output";
+ public static final String MESSAGE_CONSOLE_NAME = "Message Console";
+
+ private static Text text = null;
+ private static Composite parent = null;
+
+ private static ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ private static PrintStream ps = new PrintStream(baos);
+ private static Vector messages = new Vector();
+
+
+ public OutputView() {
+ super();
+ }
+
+ public void createPartControl(Composite parent) {
+ OutputView.parent = parent;
+ parent.setLayout(new FillLayout());
+ text = new Text(parent, SWT.MULTI | SWT.WRAP);
+ String s = "";
+
+ for(int i = 0; i < messages.size(); i++) {
+ s += messages.get(i);
+ }
+
+ text.setText(s);
+ }
+
+ public void setFocus() {
+
+ }
+
+ /**
+ * This method stores the given string in an internal storage and
+ * shows it in OutputView.
+ * @param s The string that will be printed in output view.
+ */
+ public static void print(String s) {
+
+ messages.add(s+"\n");
+
+ if(parent != null &&
+ text != null &&
+ !text.isDisposed() &&
+ !parent.isDisposed()) {
+
+ text.append(s+"\n");
+ parent.layout(true);
+ }
+ }
+
+ /**
+ * This method stores stack trace of the given exception in an internal storage and
+ * shows it in OutputView.
+ * @param t The throwable/exception that will be printed in output view.
+ */
+ public static void print(Throwable t) {
+ t.printStackTrace(ps);
+ String s = baos.toString()+"\n";
+ messages.add(s);
+
+ if(text != null && !text.isDisposed()) {
+ text.append(s);
+ }
+
+ baos.reset();
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/OutputView.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Perspective.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Perspective.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Perspective.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Perspective.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,49 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPerspectiveFactory;
+
+public class Perspective implements IPerspectiveFactory {
+
+ public static final String ID = "org.apache.harmony.x.management.console.plugin.perspective";
+
+ public void createInitialLayout(IPageLayout layout) {
+
+ String editorArea = layout.getEditorArea();
+
+ layout.setEditorAreaVisible(false);
+// layout.setFixed(true);
+
+ layout.addNewWizardShortcut("org.apache.harmony.x.management.console.plugin.wizard.new");
+
+ IFolderLayout treeFolder = layout.createFolder("tree", IPageLayout.LEFT, 0.25f, editorArea);
+ treeFolder.addView(MBeanTreeView.ID);
+
+ layout.addView(AttributeView.ID, IPageLayout.TOP, 0.5f, editorArea);
+
+ layout.addView(OperationView.ID, IPageLayout.TOP, 0.5f, editorArea);
+
+ IFolderLayout outputfolder= layout.createFolder("bottom", IPageLayout.BOTTOM, 0.25f, editorArea);
+ outputfolder.addView(NotificationView.ID);
+ outputfolder.addView(OutputView.ID);
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Perspective.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/ResultDialog.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/ResultDialog.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/ResultDialog.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/ResultDialog.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,99 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+
+class ResultDialog {
+
+ private Shell result_SHELL = null;
+
+ private Button res_ok_BUTTON = null;
+ private Label invoke_LABEL = null;
+ private Label result_LABEL = null;
+ private Composite result_COMPOSITE = null;
+
+ /**
+ * This method initializes result_SHELL.
+ *
+ * @param parent - the parent Shell of this ResultDialog
+ * @param mbean the name of the MBean which operation was invoked.
+ * @param op - the name of the operation inoked.
+ * @param params - the array of the values of the parameters of the operation.
+ * @param result - the object returned from the invocation of the operation.
+ */
+ ResultDialog(Composite parent, String mbean, String op, String[] params, Object result) {
+ result_SHELL = new Shell(parent.getShell(), SWT.APPLICATION_MODAL | SWT.CLOSE | SWT.RESIZE);
+ result_SHELL.setText("Result: ");
+ result_SHELL.setMinimumSize(500, 100);
+ result_SHELL.setLayout(new FillLayout());
+ result_SHELL.setImage(parent.getDisplay().getSystemImage(SWT.ICON_INFORMATION));
+
+ result_COMPOSITE = new Composite(result_SHELL, SWT.NONE);
+
+ String s = "["+mbean+"]."+op+"(";
+ for(int i = 0; i < params.length; i++) {
+ if(i != 0) {
+ s = s+", ";
+ }
+ s = s+params[i];
+ }
+
+ s = s+");";
+
+ invoke_LABEL = new Label(result_COMPOSITE, SWT.NONE);
+ invoke_LABEL.setText("Method: "+s);
+
+ result_LABEL = new Label(result_COMPOSITE, SWT.NONE);
+ result_LABEL.setText("Result: "+ result);
+
+ res_ok_BUTTON = new Button(result_COMPOSITE, SWT.NONE);
+ res_ok_BUTTON.setText("OK");
+
+ res_ok_BUTTON.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ result_SHELL.close();
+ result_SHELL.dispose();
+ }
+ });
+
+ result_COMPOSITE.addPaintListener(new PaintListener() {
+
+ public void paintControl(PaintEvent e) {
+ int w = result_COMPOSITE.getSize().x;
+ int h = result_COMPOSITE.getSize().y;
+ invoke_LABEL.setBounds(0, 0, w, h/3);
+ result_LABEL.setBounds(0, h/3, w, h/3);
+ res_ok_BUTTON.setBounds(w/2-50, h/3 > 24 ? h-24 : h*2/3 + 2, 100, (h/3-4) > 20? 20:(h/3-4));
+ }
+ });
+
+ result_SHELL.pack();
+ result_SHELL.open();
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/ResultDialog.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Tools.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Tools.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Tools.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Tools.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,48 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+public class Tools {
+
+ public static void cleanComposite(Composite composite) {
+
+ if(composite == null) return;
+
+ Control[] controls = composite.getChildren();
+ for (int i = 0; i < controls.length; i++) {
+ controls[i].dispose();
+ }
+ }
+
+ public static void fireErrorDialog(Composite parent, Throwable exception) {
+ if(parent != null && !parent.isDisposed()) {
+ Shell shell = new Shell(parent.getDisplay());
+ new ErrorDialog(shell, exception);
+ }
+ }
+
+ public static void fireErrorDialog(Shell shell, Throwable exception) {
+ if(shell != null && !shell.isDisposed()) {
+ new ErrorDialog(shell, exception);
+ }
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/Tools.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/VMView.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/VMView.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/VMView.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/VMView.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,195 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+
+package org.apache.harmony.x.management.console.plugin;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.swt.widgets.Label;
+
+public class VMView extends ViewPart {
+
+ public static final String ID = "org.apache.harmony.x.management.console.plugin.view.vm";
+
+ private Composite VMView_COMPOSITE = null;
+
+ private Composite classLoadingMXBean_COMPOSITE = null;
+
+ private Composite compilationMXBean_COMPOSITE = null;
+
+ private Composite garbageCollectorMXBean_COMPOSITE = null;
+
+ private Composite memoryManagerMXBean_COMPOSITE = null;
+
+ private Composite memoryMXBean_COMPOSITE = null;
+
+ private Composite memoryPoolMXBean_COMPOSITE = null;
+
+ private Composite operatingSystemMXBean_COMPOSITE = null;
+
+ private Composite runtimeMXBean_COMPOSITE = null;
+
+ private Composite threadMXBean_COMPOSITE = null;
+
+ public void createPartControl(Composite parent) {
+ try {
+ VMView_COMPOSITE = new Composite(parent, SWT.NONE);
+ VMView_COMPOSITE.setLayout(new FillLayout());
+
+ TabFolder VMView_TABFOLDER = new TabFolder(VMView_COMPOSITE,
+ SWT.NONE);
+
+ TabItem classLoadingMXBean_TABITEM = new TabItem(VMView_TABFOLDER,
+ SWT.NONE);
+ TabItem compilationMXBean_TABITEM = new TabItem(VMView_TABFOLDER,
+ SWT.NONE);
+ TabItem garbageCollectorMXBean_TABITEM = new TabItem(
+ VMView_TABFOLDER, SWT.NONE);
+ TabItem memoryManagerMXBean_TABITEM = new TabItem(VMView_TABFOLDER,
+ SWT.NONE);
+ TabItem memoryMXBean_TABITEM = new TabItem(VMView_TABFOLDER,
+ SWT.NONE);
+ TabItem memoryPoolMXBean_TABITEM = new TabItem(VMView_TABFOLDER,
+ SWT.NONE);
+ TabItem operatingSystemMXBean_TABITEM = new TabItem(
+ VMView_TABFOLDER, SWT.NONE);
+ TabItem runtimeMXBean_TABITEM = new TabItem(VMView_TABFOLDER,
+ SWT.NONE);
+ TabItem threadMXBean_TABITEM = new TabItem(VMView_TABFOLDER,
+ SWT.NONE);
+
+ classLoadingMXBean_TABITEM.setText("Class Loading");
+ compilationMXBean_TABITEM.setText("Compilation");
+ garbageCollectorMXBean_TABITEM.setText("Garbage Collector");
+ memoryManagerMXBean_TABITEM.setText("Memory Manager");
+ memoryMXBean_TABITEM.setText("Memory");
+ memoryPoolMXBean_TABITEM.setText("Memory Pool");
+ operatingSystemMXBean_TABITEM.setText("Operating System");
+ runtimeMXBean_TABITEM.setText("Runtime");
+ threadMXBean_TABITEM.setText("Threads");
+
+ classLoadingMXBean_TABITEM.setToolTipText("Class Loading");
+ compilationMXBean_TABITEM.setToolTipText("Compilation");
+ garbageCollectorMXBean_TABITEM.setToolTipText("Garbage Collector");
+ memoryManagerMXBean_TABITEM.setToolTipText("Memory Manager");
+ memoryMXBean_TABITEM.setToolTipText("Memory");
+ memoryPoolMXBean_TABITEM.setToolTipText("Memory Pool");
+ operatingSystemMXBean_TABITEM.setToolTipText("Operating System");
+ runtimeMXBean_TABITEM.setToolTipText("Runtime");
+ threadMXBean_TABITEM.setToolTipText("Threads");
+
+ classLoadingMXBean_COMPOSITE = new Composite(VMView_TABFOLDER,
+ SWT.NONE);
+ compilationMXBean_COMPOSITE = new Composite(VMView_TABFOLDER,
+ SWT.NONE);
+ garbageCollectorMXBean_COMPOSITE = new Composite(VMView_TABFOLDER,
+ SWT.NONE);
+ memoryManagerMXBean_COMPOSITE = new Composite(VMView_TABFOLDER,
+ SWT.NONE);
+ memoryMXBean_COMPOSITE = new Composite(VMView_TABFOLDER, SWT.NONE);
+ memoryPoolMXBean_COMPOSITE = new Composite(VMView_TABFOLDER,
+ SWT.NONE);
+ operatingSystemMXBean_COMPOSITE = new Composite(VMView_TABFOLDER,
+ SWT.NONE);
+ runtimeMXBean_COMPOSITE = new Composite(VMView_TABFOLDER, SWT.NONE);
+ threadMXBean_COMPOSITE = new Composite(VMView_TABFOLDER, SWT.NONE);
+
+ classLoadingMXBean_TABITEM.setControl(classLoadingMXBean_COMPOSITE);
+ compilationMXBean_TABITEM.setControl(compilationMXBean_COMPOSITE);
+ garbageCollectorMXBean_TABITEM
+ .setControl(garbageCollectorMXBean_COMPOSITE);
+ memoryManagerMXBean_TABITEM
+ .setControl(memoryManagerMXBean_COMPOSITE);
+ memoryMXBean_TABITEM.setControl(memoryMXBean_COMPOSITE);
+ memoryPoolMXBean_TABITEM.setControl(memoryPoolMXBean_COMPOSITE);
+ operatingSystemMXBean_TABITEM
+ .setControl(operatingSystemMXBean_COMPOSITE);
+ runtimeMXBean_TABITEM.setControl(runtimeMXBean_COMPOSITE);
+ threadMXBean_TABITEM.setControl(threadMXBean_COMPOSITE);
+
+ createVMView();
+
+ //timer.schedule(new VMViewRefresher(), 0L, REFRESH_RATE); TODO
+ } catch (Exception exc) {
+ exc.printStackTrace();
+ parent.setLayout(new FillLayout());
+ new Label(parent, SWT.NONE).setText("No VM view available.");
+ }
+
+ }
+
+ public void setFocus() {
+
+ }
+
+ /* ************************************************************************
+ * Private methods.
+ *************************************************************************/
+ private void createVMView() {
+
+ operatingSystemMXBean_COMPOSITE.setLayout(new GridLayout(1, false));
+ classLoadingMXBean_COMPOSITE.setLayout(new GridLayout(1, false));
+
+ Hashtable hashtable = null;
+ Enumeration keys = null;
+ /* Filling Operating System Info composite */
+
+ try {
+ hashtable = Conn.getVMMonitor().getOSInfo();
+ } catch (Exception e) {
+// fireErrorDialog(main_SHELL, e); TODO
+ e.printStackTrace();
+ return;
+ }
+
+ keys = hashtable.keys();
+
+ while (keys.hasMoreElements()) {
+ Object o = keys.nextElement();
+ Label label = new Label(operatingSystemMXBean_COMPOSITE, SWT.NONE);
+ label.setText(o + ": " + hashtable.get(o));
+ }
+
+ /* Filling Class Loading composite */
+
+ try {
+ hashtable = Conn.getVMMonitor().getClassLoadingInfo();
+ } catch (Exception e) {
+// fireErrorDialog(main_SHELL, e); TODO
+ e.printStackTrace();
+ return;
+ }
+
+ keys = hashtable.keys();
+
+ while (keys.hasMoreElements()) {
+ Object o = keys.nextElement();
+ Label label = new Label(classLoadingMXBean_COMPOSITE, SWT.NONE);
+ label.setText(o + ": " + hashtable.get(o));
+ }
+ }
+
+
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/VMView.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/AbstractEditor.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/AbstractEditor.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/AbstractEditor.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/AbstractEditor.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,187 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+package org.apache.harmony.x.management.console.plugin.editor;
+
+import org.apache.harmony.x.management.console.plugin.Conn;
+import org.apache.harmony.x.management.console.plugin.Tools;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * Represents single attribute editor.
+ * Each attribute editor consists of 2 parts: the left and the right part.
+ * Left part holds name/type of attribute and optionally expand/collapse button.
+ * Right part contains the representation of this attribute according to its type.
+ * It means that in the case of text based attributes (i.e. String, ObjectName)
+ * the right part of editor will contain text box and optionally Submit button.
+ * On the other hand if the attribute is of array type or TabularData the right
+ * part of editor will contain the table.
+ *
+ * @author Victor A. Martynov
+ */
+public abstract class AbstractEditor extends Composite {
+
+ protected static final int NAME_WIDTH_PERCENTAGE = 30;
+
+ protected String mbean_name;
+ protected String attribute_name;
+ protected String type;
+ protected Composite parent;
+ boolean collapsed;
+ protected boolean isEditable;
+
+ protected int rightPartWidth;
+ protected int leftPartWidth;
+ private Button expandCollapseButton;
+
+ protected Composite row;
+
+ /**
+ * Each editor should have the main element which obtains focus when the
+ * attribute is edited. If the focus was given to main UI element of the
+ * editor, the refresh should stop to allow editing. Each editor
+ * implements this method in its own way.
+ *
+ * @return true if the main element of editor got focus, false otherwise.
+ */
+ public abstract boolean isFocused();
+
+ /**
+ * Each editor implementation should convert its contents into a String and return
+ * it here.
+ *
+ * @return The value of the attribute as a String.
+ */
+ public abstract String getValue();
+
+ /**
+ * This method sets the value of this editor to the given value. It is a
+ * responsibility of the editor implementations to convert
+ * <code>value</code> into something suitable for this type of editor.
+ *
+ * @param value The value of attribute.
+ */
+ public abstract void setValue(Object value);
+
+ /**
+ * Brief view has the height of 25 pixels.
+ */
+ public abstract void brief();
+
+ /**
+ * Full view has the height returned by <code>getFullHeight</code> method.
+ */
+ public abstract void full();
+
+ protected AbstractEditor(final Composite parent,
+ final String mbean_name,
+ final String attribute_name,
+ final String type,
+ boolean isEditable) {
+ super(parent, SWT.NONE);
+
+ this.mbean_name = mbean_name;
+ this.attribute_name = attribute_name;
+ this.type = type;
+ this.parent = parent;
+ this.isEditable = isEditable;
+ collapsed = true;
+ rightPartWidth = parent.getSize().x*(100-NAME_WIDTH_PERCENTAGE)/100 - 25;
+ leftPartWidth = parent.getSize().x*NAME_WIDTH_PERCENTAGE/100;
+
+ rightPartWidth = (rightPartWidth <= 0) ? 600 : rightPartWidth;
+ leftPartWidth = (leftPartWidth <= 0) ? 300 : leftPartWidth;
+
+ setAttributeNameAndType();
+ setSize(leftPartWidth+rightPartWidth, 25);
+ }
+
+
+ protected void showExpandCollapseButton(boolean visible) {
+ expandCollapseButton.setVisible(visible);
+ }
+
+
+ protected void commit() {
+ try {
+ Conn.getMBeanOperations().setAttribute(mbean_name, attribute_name, getValue(), type);
+ } catch (Exception e) {
+ Tools.fireErrorDialog(getParent(), e);
+ }
+ }
+
+ /* ************************************************************************
+ * Private Methods
+ *************************************************************************/
+
+ /**
+ *
+ */
+ private void setAttributeNameAndType() {
+
+ int dotPosition = type.lastIndexOf("."); //Last Dot position
+ String short_attr_type = (dotPosition == -1)
+ ? type
+ : type.substring(dotPosition + 1);
+
+ Label name_type_LABEL = new Label(this, SWT.NONE);
+ name_type_LABEL.setText(attribute_name + "[" + short_attr_type+ "]: ");
+ name_type_LABEL.setToolTipText(attribute_name + "[" + type+ "]");
+ name_type_LABEL.setBounds(0,0, leftPartWidth-25, 25);
+
+ expandCollapseButton = new Button(this, SWT.NONE);
+ expandCollapseButton.setVisible(false);
+
+ expandCollapseButton.setText("+");
+ expandCollapseButton.setToolTipText("Expand");
+
+ expandCollapseButton.setBounds(leftPartWidth-25+5, 5, 15, 15);
+ expandCollapseButton.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+
+ if(collapsed) {
+ expandCollapseButton.setText("-");
+ expandCollapseButton.setToolTipText("Collapse");
+ full();
+ collapsed = false;
+ } else {
+ expandCollapseButton.setText("+");
+ expandCollapseButton.setToolTipText("Expand");
+ brief();
+ collapsed = true;
+ }
+
+ layout(true);
+
+ Composite attributeTable = getParent();
+ attributeTable.layout(true);
+ Point preferredSize = attributeTable.computeSize(getParent().getSize().x, SWT.DEFAULT);
+ ScrolledComposite sc = (ScrolledComposite)getParent().getParent();
+ sc.setMinSize(preferredSize);
+ sc.layout(true);
+ }
+ });
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/AbstractEditor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/ArrayEditor.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/ArrayEditor.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/ArrayEditor.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/ArrayEditor.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,141 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+package org.apache.harmony.x.management.console.plugin.editor;
+
+import java.util.Vector;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+public class ArrayEditor extends AbstractEditor {
+
+ private static final int BUTTON_WIDTH=70;
+
+ Table table;
+ TableColumn column;
+ Button button;
+ Text text;
+
+ public ArrayEditor(Composite parent, String mbean_name,
+ String attribute_name, String type, boolean isEditable) {
+ super(parent, mbean_name, attribute_name, type, isEditable);
+
+ int tableWidth = rightPartWidth - (isEditable ? BUTTON_WIDTH : 0);
+
+ table = new Table(this, SWT.MULTI);
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+ column = new TableColumn(table, SWT.LEFT);
+ column.setWidth(tableWidth-25);
+
+ if(isEditable) {
+ button = new Button(this, SWT.NONE);
+ button.setText("Set");
+ button.setToolTipText("Set attribute value in the MBean");
+ button.setBounds(leftPartWidth+tableWidth, 0, BUTTON_WIDTH, 25);
+ button.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ ArrayEditor.this.commit();
+ }
+ });
+ }
+
+ showExpandCollapseButton(true);
+ brief();
+ }
+
+ public void setValue(Object value) {
+ Object []array = convertArray(value).toArray();
+ table.removeAll();
+ column.setText(convertType(type)+"["+array.length+"]");
+ for(int i = 0; i < array.length; i++) {
+ TableItem tableItem = new TableItem(table, SWT.NONE);
+ tableItem.setText(0, array[i]+"");
+ }
+ }
+
+ public void brief() {
+ int tableWidth = rightPartWidth - (isEditable ? BUTTON_WIDTH : 0);
+ table.setBounds(leftPartWidth, 0, tableWidth, 25);
+ }
+
+ public void full() {
+ int tableWidth = rightPartWidth - (isEditable ? BUTTON_WIDTH : 0);
+ Point preferredSize = table.computeSize(tableWidth, SWT.DEFAULT);
+ table.setBounds(leftPartWidth, 0, tableWidth, preferredSize.y);
+ }
+
+ public boolean isFocused() {
+ return table.isFocusControl();
+ }
+
+ public String getValue() {
+ return null;
+ }
+
+ private Vector convertArray(Object o) {
+
+ Vector v = new Vector();
+
+ if(o instanceof Object[]) {
+ Object oo[] = (Object[]) o;
+ for(int i = 0; i < oo.length; i++) {
+ v.add(oo[i]);
+ }
+ } else if(o instanceof long[]) {
+ long ol[] = (long[]) o;
+ for(int i = 0; i < ol.length; i++) {
+ v.add(new Long(ol[i]));
+ }
+ }
+ return v;
+ }
+
+ private String convertType(String type) {
+ if( type.equals("[B")) {
+ return "byte";
+ } else if(type.equals("[C")) {
+ return "char";
+ } else if(type.equals("[D")) {
+ return "double";
+ } else if(type.equals("[F")) {
+ return "float";
+ } else if(type.equals("[I")) {
+ return "int";
+ } else if(type.equals("[J")) {
+ return "long";
+ } else if(type.equals("[S")) {
+ return "short";
+ } else if(type.equals("[Z")) {
+ return "boolean";
+ } else if(type.startsWith("[L")) {
+ return type.substring(2, type.length()-1);
+ } else {
+ return type;
+ }
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/ArrayEditor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/BooleanEditor.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/BooleanEditor.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/BooleanEditor.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/BooleanEditor.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,81 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+package org.apache.harmony.x.management.console.plugin.editor;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+public class BooleanEditor extends AbstractEditor {
+
+ Button button;
+
+ public BooleanEditor(Composite parent,
+ String mbean_name,
+ String attribute_name,
+ String type,
+ boolean isEditable) {
+
+ super(parent, mbean_name, attribute_name, type, isEditable);
+
+ button = new Button(this, SWT.CHECK);
+ button.setBounds(leftPartWidth, 0, rightPartWidth, 25);
+
+ if(isEditable) {
+ button.setEnabled(true);
+ button.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ BooleanEditor.this.commit();
+ }
+ });
+ } else {
+ button.setEnabled(false);
+ }
+
+ button.setToolTipText("Set the value");
+
+ brief();
+ }
+
+ public void setValue(Object value) {
+ String s = value+"";
+ button.setSelection(new Boolean(s).booleanValue());
+ }
+
+ public String getValue() {
+ return button.getSelection()+"";
+ }
+
+ public void brief() {
+ }
+
+ public void full() {
+ }
+
+ public void addMouseListener(MouseListener listener) {
+ button.addMouseListener(listener);
+ }
+
+ public boolean isFocused() {
+ return button.isFocusControl();
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/BooleanEditor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/CommonEditor.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/CommonEditor.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/CommonEditor.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/CommonEditor.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,95 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+package org.apache.harmony.x.management.console.plugin.editor;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+public class CommonEditor extends AbstractEditor {
+
+ Text text;
+ Button setButton;
+ private final int BUTTON_WIDTH = 70;
+
+
+ public CommonEditor(Composite parent,
+ String mbean_name,
+ String attribute_name,
+ String type,
+ boolean isEditable) {
+ super(parent, mbean_name, attribute_name, type, isEditable);
+
+ text = new Text(this, SWT.BORDER | SWT.WRAP | SWT.MULTI);
+
+ int textWidth = rightPartWidth - (isEditable ? BUTTON_WIDTH : 0);
+
+ text.setBounds(leftPartWidth, 0, textWidth, 25);
+ text.setEditable(isEditable);
+
+ if(isEditable) {
+ setButton = new Button(this, SWT.NONE);
+ setButton.setText("Set");
+ setButton.setToolTipText("Set attribute value in the MBean");
+ setButton.setBounds(leftPartWidth+textWidth, 0, BUTTON_WIDTH, 25);
+ setButton.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ CommonEditor.this.commit();
+ }
+ });
+ } else {
+ text.setEditable(false);
+ }
+
+ showExpandCollapseButton(true);
+ brief();
+ }
+
+ public void setValue(Object value) {
+ text.setText(value+"");
+ }
+
+ public String getValue() {
+ return text.getText();
+ }
+
+ public void brief() {
+ text.setSize(text.getSize().x, 25);
+ }
+
+ public void full() {
+ int textWidth = text.getSize().x;
+
+ Point preferredSize = text.computeSize(textWidth, SWT.DEFAULT);
+
+ int setTextHeight = (preferredSize.y > text.getSize().y)
+ ? preferredSize.y
+ : text.getSize().y;
+
+ text.setBounds(leftPartWidth, 0, textWidth, setTextHeight);
+ }
+
+ public boolean isFocused() {
+ return text.isFocusControl();
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/CommonEditor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/EditorFactory.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/EditorFactory.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/EditorFactory.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/EditorFactory.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,47 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.4 $
+ */
+package org.apache.harmony.x.management.console.plugin.editor;
+
+import org.eclipse.swt.widgets.Composite;
+
+public class EditorFactory {
+
+ public static AbstractEditor create(Composite parent,
+ String mbean_name,
+ String attribute_name,
+ String type,
+ boolean isEditable) {
+
+ if(type.equals("boolean")) {
+ return new BooleanEditor(parent, mbean_name, attribute_name, type, isEditable);
+ } else if(type.equals("byte")
+ || type.equals("short")
+ || type.equals("int")
+ || type.equals("long")
+ || type.equals("float")
+ || type.equals("double")) {
+ return new NumericEditor(parent, mbean_name, attribute_name, type, isEditable);
+ } if(type.indexOf("[") != -1) { // Array
+ return new ArrayEditor(parent, mbean_name, attribute_name, type, isEditable);
+ }else {
+ return new CommonEditor(parent, mbean_name, attribute_name, type, isEditable);
+ }
+
+ }
+
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/EditorFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/NumericEditor.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/NumericEditor.java?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/NumericEditor.java (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/NumericEditor.java Wed Aug 30 08:02:59 2006
@@ -0,0 +1,80 @@
+/* Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/**
+ * @author Victor A. Martynov
+ * @version $Revision: 1.3 $
+ */
+package org.apache.harmony.x.management.console.plugin.editor;
+
+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.Text;
+
+public class NumericEditor extends AbstractEditor {
+
+ Text text;
+ Button setButton;
+ private final int BUTTON_WIDTH = 70;
+
+ public NumericEditor(Composite parent, String mbean_name,
+ String attribute_name, String type, boolean isEditable) {
+ super(parent, mbean_name, attribute_name, type, isEditable);
+
+ text = new Text(this, SWT.BORDER);
+
+ int textWidth = rightPartWidth - (isEditable ? BUTTON_WIDTH : 0);
+
+ text.setBounds(leftPartWidth, 0, textWidth, 25);
+ text.setEditable(isEditable);
+
+ if(isEditable) {
+ setButton = new Button(this, SWT.NONE);
+ setButton.setText("Set");
+ setButton.setToolTipText("Set attribute value in the MBean");
+ setButton.setBounds(leftPartWidth+textWidth, 0, BUTTON_WIDTH, 25);
+ setButton.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ NumericEditor.this.commit();
+ }
+ });
+ } else {
+ text.setEditable(false);
+ }
+
+ showExpandCollapseButton(false);
+ brief();
+ }
+
+ public void brief() {
+ }
+
+ public void full() {
+ }
+
+ public boolean isFocused() {
+ return text.isFocusControl();
+ }
+
+ public String getValue() {
+ return text.getText();
+ }
+
+ public void setValue(Object value) {
+ text.setText(value+"");
+ }
+}
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/editor/NumericEditor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/MANIFEST.MF?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/MANIFEST.MF (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/MANIFEST.MF Wed Aug 30 08:02:59 2006
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: JMXConsole Plug-in
+Bundle-SymbolicName: JMXConsole; singleton:=true
+Bundle-Version: 3.1.1
+Bundle-Activator: org.apache.harmony.x.management.console.plugin.JMXConsolePlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime
+Eclipse-AutoStart: true
+Bundle-Vendor: Intel Corp.
Added: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/plugin.xml
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/plugin.xml?rev=438510&view=auto
==============================================================================
--- incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/plugin.xml (added)
+++ incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/plugin.xml Wed Aug 30 08:02:59 2006
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<!--
+Author: Victor A. Martynov
+Version: $Revision: 1.2 $
+-->
+
+<?eclipse version="3.0"?>
+<plugin>
+
+ <extension
+ id="org.apache.harmony.x.management.console.plugin.application"
+ name="JMX Console Application"
+ point="org.eclipse.core.runtime.applications">
+ <application>
+ <run
+ class="org.apache.harmony.x.management.console.plugin.Application">
+ </run>
+ </application>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectives">
+ <perspective
+ class="org.apache.harmony.x.management.console.plugin.Perspective"
+ icon="icons/7_16x16.PNG"
+ id="org.apache.harmony.x.management.console.plugin.perspective"
+ name="JMX Perspective">
+ </perspective>
+ </extension>
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ allowMultiple="false"
+ category="org.apache.harmony.x.management.console.plugin.view.category"
+ class="org.apache.harmony.x.management.console.plugin.MBeanTreeView"
+ icon="icons/9_16x16.PNG"
+ id="org.apache.harmony.x.management.console.plugin.view.mbeantree"
+ name="MBean Tree View">
+ </view>
+ <view
+ allowMultiple="false"
+ category="org.apache.harmony.x.management.console.plugin.view.category"
+ class="org.apache.harmony.x.management.console.plugin.AttributeView"
+ icon="icons/4_16x16.PNG"
+ id="org.apache.harmony.x.management.console.plugin.view.attribute"
+ name="MBean Attribute View">
+ </view>
+ <category
+ id="org.apache.harmony.x.management.console.plugin.view.category"
+ name="JMX Console"/>
+ <view
+ category="org.apache.harmony.x.management.console.plugin.view.category"
+ class="org.apache.harmony.x.management.console.plugin.VMView"
+ id="org.apache.harmony.x.management.console.view.vm"
+ name="JVM View"/>
+ <view
+ allowMultiple="false"
+ category="org.apache.harmony.x.management.console.plugin.view.category"
+ class="org.apache.harmony.x.management.console.plugin.OperationView"
+ icon="icons/5_16x16.PNG"
+ id="org.apache.harmony.x.management.console.plugin.view.operation"
+ name="MBean Operations View"/>
+ <view
+ allowMultiple="false"
+ category="org.apache.harmony.x.management.console.plugin.view.category"
+ class="org.apache.harmony.x.management.console.plugin.NotificationView"
+ icon="icons/6_16x16.PNG"
+ id="org.apache.harmony.x.management.console.plugin.view.notification"
+ name="MBean Notification Table"/>
+ <view
+ allowMultiple="false"
+ category="org.apache.harmony.x.management.console.plugin.view.category"
+ class="org.apache.harmony.x.management.console.plugin.IndicatorView"
+ id="org.apache.harmony.x.management.console.view.indicator"
+ name="Connection Indicator"/>
+ <view
+ category="org.apache.harmony.x.management.console.plugin.view.category"
+ class="org.apache.harmony.x.management.console.plugin.OutputView"
+ id="org.apache.harmony.x.management.console.plugin.view.output"
+ name="Output"/>
+ </extension>
+
+ <extension point="org.eclipse.ui.newWizards">
+ <category
+ id="org.apache.harmony.x.management.console.plugin.wizard.category"
+ name="JMX Console">
+ </category>
+ <wizard
+ category="org.apache.harmony.x.management.console.plugin.wizard.category"
+ class="org.apache.harmony.x.management.console.plugin.ConnectWizard"
+ descriptionImage="icons/8_320x213.PNG"
+ icon="icons/1_16x16.PNG"
+ id="org.apache.harmony.x.management.console.wizard.new"
+ name="JMX Connection Wizard">
+ <description>
+ Create a JMX Connection and set initial content
+ </description>
+ <selection
+ class="org.eclipse.core.resources.IResource"
+ name="JMX Connection Wizard"/>
+ </wizard>
+ </extension>
+</plugin>
Propchange: incubator/harmony/enhanced/tools/trunk/jmx_console/src/org/apache/harmony/x/management/console/plugin/resources/plugin.xml
------------------------------------------------------------------------------
svn:eol-style = native