/******************************************************************************* * Copyright (c) 2017 Pegasystems Inc. All rights reserved. * * Contributors: * Manu Varghese *******************************************************************************/ package com.pega.gcs.tracerviewer.view; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import com.pega.gcs.fringecommon.guiutilities.Message; import com.pega.gcs.fringecommon.guiutilities.bookmark.BookmarkModel; import com.pega.gcs.fringecommon.guiutilities.markerbar.MarkerBar; import com.pega.gcs.fringecommon.guiutilities.search.SearchMarkerModel; import com.pega.gcs.tracerviewer.TraceNavigationTableController; import com.pega.gcs.tracerviewer.TraceTableModel; import com.pega.gcs.tracerviewer.model.TraceEventKey; public abstract class TracerDataView extends JPanel implements TableModelListener { private static final long serialVersionUID = 3180116914194377351L; protected abstract void updateSupplementUtilityJPanel(); private TraceNavigationTableController traceNavigationTableController; private TraceTableModel traceTableModel; private JPanel supplementUtilityJPanel; public TracerDataView(TraceTableModel traceTableModel, TraceNavigationTableController traceNavigationTableController, JPanel supplementUtilityJPanel) { super(); this.traceTableModel = traceTableModel; this.traceTableModel.addTableModelListener(this); this.traceNavigationTableController = traceNavigationTableController; this.supplementUtilityJPanel = supplementUtilityJPanel; } @Override public void tableChanged(TableModelEvent event) { if (event.getType() == TableModelEvent.UPDATE) { revalidate(); repaint(); } } protected TraceTableModel getTraceTableModel() { return traceTableModel; } protected TraceNavigationTableController getTraceNavigationTableController() { return traceNavigationTableController; } protected JPanel getSupplementUtilityJPanel() { return supplementUtilityJPanel; } public void switchToFront() { updateSupplementUtilityJPanel(); } protected void setMessage(JTextField statusBar, Message message) { if (message != null) { Color color = Color.BLUE; if (message.getMessageType().equals(Message.MessageType.ERROR)) { color = Color.RED; } String text = message.getText(); statusBar.setForeground(color); statusBar.setText(text); } } protected JPanel getMarkerBarPanel(TraceTableModel traceTableModel) { JPanel markerBarPanel = new JPanel(); markerBarPanel.setLayout(new BorderLayout()); Dimension topDimension = new Dimension(16, 28); JLabel topSpacer = new JLabel(); topSpacer.setPreferredSize(topDimension); topSpacer.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY, 1)); Dimension bottomDimension = new Dimension(16, 17); JLabel bottomSpacer = new JLabel(); bottomSpacer.setPreferredSize(bottomDimension); bottomSpacer.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY, 1)); MarkerBar<TraceEventKey> markerBar = getMarkerBar(traceTableModel); markerBarPanel.add(topSpacer, BorderLayout.NORTH); markerBarPanel.add(markerBar, BorderLayout.CENTER); markerBarPanel.add(bottomSpacer, BorderLayout.SOUTH); return markerBarPanel; } private MarkerBar<TraceEventKey> getMarkerBar(TraceTableModel traceTableModel) { TraceNavigationTableController traceNavigationTableController = getTraceNavigationTableController(); SearchMarkerModel<TraceEventKey> searchMarkerModel = new SearchMarkerModel<TraceEventKey>(traceTableModel); MarkerBar<TraceEventKey> markerBar = new MarkerBar<TraceEventKey>(traceNavigationTableController, searchMarkerModel); BookmarkModel<TraceEventKey> bookmarkModel; bookmarkModel = traceTableModel.getBookmarkModel(); markerBar.addMarkerModel(bookmarkModel); return markerBar; } }