/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* or http://forgerock.org/license/CDDLv1.0.html.
* 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 legal-notices/CDDLv1_0.txt.
* 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 2009 Sun Microsystems, Inc.
* Portions Copyright 2014-2015 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.server.util.StaticUtils.isOEMVersion;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.GridBagConstraints;
import javax.swing.JPanel;
import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.i18n.LocalizableMessage;
/**
* The panel on the right of the 'General Information' panel.
*
*/
public class GeneralMonitoringRightPanel extends StatusGenericPanel
{
private static final long serialVersionUID = -4197460101279681042L;
/** The panel with a CardLayout that contains all the panels. */
protected JPanel mainPanel;
private RootMonitoringPanel rootPanel = new RootMonitoringPanel();
private WorkQueueMonitoringPanel workQueuePanel = new WorkQueueMonitoringPanel();
private EntryCachesMonitoringPanel entryCachesPanel = new EntryCachesMonitoringPanel();
private DatabaseMonitoringPanel jeMonitoringPanel = new DatabaseMonitoringPanel(BackendDescriptor.PluggableType.JE);
private DatabaseMonitoringPanel pdbMonitoringPanel = new DatabaseMonitoringPanel(BackendDescriptor.PluggableType.PDB);
private SystemInformationMonitoringPanel systemInformationPanel = new SystemInformationMonitoringPanel();
private JavaInformationMonitoringPanel javaInformationPanel = new JavaInformationMonitoringPanel();
private static final String rootPanelTitle = "RootMonitoringPanel";
private static final String workQueuePanelTitle = "WorkQueueMonitoringPanel";
private static final String entryCachesPanelTitle = "EntryCachesMonitoringPanel";
private static final String jeMonitoringPanelTitle = "JEDatabaseMonitoringPanel";
private static final String pdbMonitoringPanelTitle = "PDBDatabaseMonitoringPanel";
private static final String systemInformationPanelTitle = "SystemInformationMonitoringPanel";
private static final String javaInformationPanelTitle = "JavaInformationMonitoringPanel";
/** The panel used to update messages. */
protected NoItemSelectedPanel noEntryPanel = new NoItemSelectedPanel();
private static final String noEntryPanelTitle = "JavaInformationMonitoringPanel";
private final StatusGenericPanel[] panels =
{
rootPanel,
workQueuePanel,
entryCachesPanel,
jeMonitoringPanel,
pdbMonitoringPanel,
systemInformationPanel,
javaInformationPanel
};
/** Default constructor. */
public GeneralMonitoringRightPanel()
{
super();
createLayout();
}
/**
* Displays a panel containing a message.
* @param msg the message.
*/
public void displayMessage(LocalizableMessage msg)
{
noEntryPanel.setMessage(msg);
((CardLayout)mainPanel.getLayout()).show(mainPanel, noEntryPanelTitle);
}
/** {@inheritDoc} */
public void setInfo(ControlPanelInfo info)
{
super.setInfo(info);
for (StatusGenericPanel panel : panels)
{
panel.setInfo(info);
}
}
/** Creates the layout of the panel (but the contents are not populated here). */
protected void createLayout()
{
GridBagConstraints gbc = new GridBagConstraints();
CardLayout cardLayout = new CardLayout();
mainPanel = new JPanel(cardLayout);
mainPanel.setOpaque(false);
noEntryPanel.setMessage(INFO_CTRL_PANEL_GENERAL_MONITORING_NO_ITEM_SELECTED.get());
// panels with scroll
mainPanel.add(Utilities.createBorderLessScrollBar(noEntryPanel), noEntryPanelTitle);
mainPanel.add(Utilities.createBorderLessScrollBar(rootPanel), rootPanelTitle);
mainPanel.add(Utilities.createBorderLessScrollBar(workQueuePanel), workQueuePanelTitle);
mainPanel.add(Utilities.createBorderLessScrollBar(entryCachesPanel), entryCachesPanelTitle);
mainPanel.add(Utilities.createBorderLessScrollBar(systemInformationPanel), systemInformationPanelTitle);
mainPanel.add(Utilities.createBorderLessScrollBar(javaInformationPanel), javaInformationPanelTitle);
// panels with no scroll
if (!isOEMVersion())
{
mainPanel.add(jeMonitoringPanel, jeMonitoringPanelTitle);
}
mainPanel.add(pdbMonitoringPanel, pdbMonitoringPanelTitle);
cardLayout.show(mainPanel, noEntryPanelTitle);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.BOTH;
add(mainPanel, gbc);
}
/** {@inheritDoc} */
public void okClicked()
{
// No ok button
}
/** {@inheritDoc} */
public GenericDialog.ButtonType getButtonType()
{
return GenericDialog.ButtonType.NO_BUTTON;
}
/** {@inheritDoc} */
public LocalizableMessage getTitle()
{
return LocalizableMessage.EMPTY;
}
/** {@inheritDoc} */
public Component getPreferredFocusComponent()
{
return null;
}
/** {@inheritDoc} */
public void configurationChanged(ConfigurationChangeEvent ev)
{
}
/** Updates the contents of the panel with the root monitoring information. */
public void updateRoot()
{
rootPanel.updateContents();
((CardLayout)mainPanel.getLayout()).show(mainPanel, rootPanelTitle);
}
/** Updates the contents of the panel with the system information monitoring. */
public void updateSystemInformation()
{
systemInformationPanel.updateContents();
((CardLayout)mainPanel.getLayout()).show(mainPanel, systemInformationPanelTitle);
}
/** Updates the contents of the panel with the work queue monitoring information. */
public void updateWorkQueue()
{
workQueuePanel.updateContents();
((CardLayout)mainPanel.getLayout()).show(mainPanel, workQueuePanelTitle);
}
/** Updates the contents of the panel with the entry caches monitoring information. */
public void updateEntryCaches()
{
entryCachesPanel.updateContents();
((CardLayout)mainPanel.getLayout()).show(mainPanel, entryCachesPanelTitle);
}
/** Updates the contents of the panel with the je database monitoring information. */
public void updateJEDatabaseInformation()
{
jeMonitoringPanel.updateContents();
((CardLayout)mainPanel.getLayout()).show(mainPanel, jeMonitoringPanelTitle);
}
/** Updates the contents of the panel with the pdb database monitoring information. */
public void updatePDBDatbaseInformation()
{
pdbMonitoringPanel.updateContents();
((CardLayout)mainPanel.getLayout()).show(mainPanel, pdbMonitoringPanelTitle);
}
/** Updates the contents of the panel with the JAVA information. */
public void updateJavaInformation()
{
javaInformationPanel.updateContents();
((CardLayout)mainPanel.getLayout()).show(mainPanel, javaInformationPanelTitle);
}
}