00001
00025
package org.objectweb.cjdbc.console.gui.objects;
00026
00027
import java.awt.Color;
00028
import java.awt.datatransfer.DataFlavor;
00029
import java.awt.datatransfer.Transferable;
00030
import java.awt.datatransfer.UnsupportedFlavorException;
00031
import java.awt.dnd.DnDConstants;
00032
import java.awt.dnd.DragSource;
00033
import java.io.IOException;
00034
00035
import javax.management.InstanceNotFoundException;
00036
import javax.swing.SwingConstants;
00037
00038
import org.objectweb.cjdbc.common.jmx.mbeans.DatabaseBackendMBean;
00039
import org.objectweb.cjdbc.console.gui.CjdbcGui;
00040
import org.objectweb.cjdbc.console.gui.constants.GuiConstants;
00041
import org.objectweb.cjdbc.console.gui.constants.GuiIcons;
00042
import org.objectweb.cjdbc.console.gui.dnd.listeners.BackendTransferListener;
00043
import org.objectweb.cjdbc.console.gui.popups.BackendPopUpMenu;
00044
import org.objectweb.cjdbc.console.jmx.RmiJmxClient;
00045
00052 public class BackendObject extends AbstractGuiObject
00053 implements
00054 Transferable,
00055 Cloneable
00056
00057 {
00058 private String
backendState;
00059 private String
database;
00060 private String
controllerName;
00061 private DatabaseBackendMBean
mbean;
00062 private String
user;
00063 private String
password;
00064 private CjdbcGui gui;
00065 private RmiJmxClient
jmxClient;
00066
00074 public DatabaseBackendMBean
getMbean() throws InstanceNotFoundException,
00075 IOException
00076 {
00077
jmxClient = (RmiJmxClient)
gui.
getJmxClients().get(
controllerName);
00078
user =
gui.
getGuiSession().
getAuthenticatedDatabaseLogin(
database);
00079
password =
gui.
getGuiSession().
getAuthenticatedDatabasePassword(
database);
00080
mbean =
jmxClient.getDatabaseBackendProxy(
database, getName(),
user,
00081
password);
00082
return mbean;
00083 }
00084
00096 public BackendObject(
CjdbcGui gui,
BackendTransferListener listener,
00097 String database, String name, String controllerName)
00098
throws InstanceNotFoundException, IOException
00099 {
00100 super();
00101
this.database =
database;
00102
this.controllerName =
controllerName;
00103
this.gui =
gui;
00104 setText(name);
00105
setName(name);
00106 setBackground(Color.white);
00107 setVerticalTextPosition(SwingConstants.BOTTOM);
00108
00109
getMbean();
00110
00111 addMouseMotionListener(listener);
00112 addMouseListener(listener);
00113 addMouseListener(
new BackendPopUpMenu(
gui,
this));
00114
00115 DragSource dragSource = DragSource.getDefaultDragSource();
00116 dragSource.createDefaultDragGestureRecognizer(
this,
00117 DnDConstants.ACTION_COPY_OR_MOVE,
00118 listener);
00119 }
00120
00126 public String
getState()
00127 {
00128
return backendState;
00129 }
00130
00136 public void setState(String state)
00137 {
00138
this.backendState = state;
00139
if (state.equals(
GuiConstants.BACKEND_STATE_ENABLED))
00140 setIcon(
GuiIcons.BACKEND_ENABLED_ICON);
00141
else if (state.equals(
GuiConstants.BACKEND_STATE_DISABLED))
00142 setIcon(
GuiIcons.BACKEND_DISABLED_ICON);
00143
else if (state.equals(
GuiConstants.BACKEND_STATE_DISABLING))
00144 setIcon(
GuiIcons.BACKEND_DISABLING_ICON);
00145
else if (state.equals(
GuiConstants.BACKEND_STATE_BACKUP))
00146 setIcon(
GuiIcons.BACKEND_BACKUP_ICON);
00147
else if (state.equals(
GuiConstants.BACKEND_STATE_RESTORE))
00148 setIcon(
GuiIcons.BACKEND_RESTORE_ICON);
00149
else if (state.equals(
GuiConstants.BACKEND_STATE_RECOVERY))
00150 setIcon(
GuiIcons.BACKEND_STATE_RECOVERY);
00151 }
00152
00156 public DataFlavor[]
getTransferDataFlavors()
00157 {
00158
return new DataFlavor[]{DataFlavor.stringFlavor, DataFlavor.plainTextFlavor};
00159 }
00160
00164 public boolean isDataFlavorSupported(DataFlavor flavor)
00165 {
00166
if (flavor.equals(DataFlavor.stringFlavor)
00167 || flavor.equals(DataFlavor.plainTextFlavor))
00168
return true;
00169
else
00170
return false;
00171 }
00172
00176 public Object
getTransferData(DataFlavor flavor)
00177
throws UnsupportedFlavorException, IOException
00178 {
00179
return this.getText();
00180 }
00181
00187 public String
getDatabase()
00188 {
00189
return database;
00190 }
00191
00197 public String
getControllerName()
00198 {
00199
return controllerName;
00200 }
00201
00207 public void setControllerName(String controllerName)
00208 {
00209
this.controllerName = controllerName;
00210 }
00211
00215 public void setName(String name)
00216 {
00217 super.setName(name);
00218 setText(name);
00219 }
00220 }