CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Friends
FWTableViewTableManager Class Reference

#include <Fireworks/Core/interface/FWTableViewTableManager.h>

Inheritance diagram for FWTableViewTableManager:
FWTableManagerBase

Public Member Functions

virtual FWTableCellRendererBasecellRenderer (int iSortedRowNumber, int iCol) const
 
void dataChanged ()
 Called if mouse button pressed in Row Header, defaults is to do nothing. More...
 
 FWTableViewTableManager (const FWTableView *)
 
virtual std::vector< std::string > getTitles () const
 returns the title names for each column More...
 
virtual bool hasRowHeaders () const
 require all cells to be the same height More...
 
virtual int numberOfColumns () const
 Number of columns in the table. More...
 
virtual int numberOfRows () const
 Number of rows in the table. More...
 
virtual FWTableCellRendererBaserowHeader (int iSortedRowNumber) const
 Returns the renderer for the row header for the sorted row number iSortedRowNumber. More...
 
virtual int unsortedRowNumber (int iSortedRowNumber) const
 
void updateEvaluators ()
 
virtual ~FWTableViewTableManager ()
 
- Public Member Functions inherited from FWTableManagerBase
virtual void buttonPressedInRowHeader (Int_t row, Event_t *event, Int_t relX, Int_t relY)
 Called if mouse button pressed in Row Header, defaults is to do nothing. More...
 
virtual void buttonReleasedInRowHeader (Int_t row, Event_t *event, Int_t relX, Int_t relY)
 
virtual bool cellDataIsSortable () const
 
virtual unsigned int cellHeight () const
 require all cells to be the same height More...
 
 ClassDef (FWTableManagerBase, 0)
 
void dataChanged ()
 Classes which inherit from FWTableManagerBase must call this when their underlying data changes. More...
 
 FWTableManagerBase ()
 
virtual bool hasLabelHeaders () const
 
virtual std::vector< unsigned int > maxWidthForColumns () const
 for each column in the table this returns the present maximum width for that column More...
 
void sort (int iCol, bool iSortOrder)
 Call to have table sorted on values in column iCol with the sort order being descending if iSortOrder is 'true'. More...
 
int sortColumn (void)
 The current sort column. More...
 
bool sortOrder (void)
 The current sort order for the table. More...
 
void visualPropertiesChanged ()
 Classes which inherit from FWTableManagerBase must call this when how the data is shown (e.g. color) changes. More...
 
virtual ~FWTableManagerBase ()
 

Protected Member Functions

virtual void implSort (int iCol, bool iSortOrder)
 

Protected Attributes

bool m_caughtExceptionInCellRender
 
std::vector
< FWExpressionEvaluator
m_evaluators
 
TGGC * m_graphicsContext
 
TGGC * m_highlightContext
 
FWTextTableCellRendererm_renderer
 
TGGC * m_rowContext
 
TGGC * m_rowFillContext
 
FWFramedTextTableCellRendererm_rowRenderer
 
std::vector< int > m_sortedToUnsortedIndices
 
std::vector
< FWTableViewManager::TableEntry > * 
m_tableFormats
 
const FWTableViewm_view
 

Private Member Functions

const FWEventItemcollection () const
 
 FWTableViewTableManager (const FWTableViewTableManager &)
 
const FWTableViewTableManageroperator= (const FWTableViewTableManager &)
 

Friends

class FWTableView
 

Detailed Description

Definition at line 32 of file FWTableViewTableManager.h.

Constructor & Destructor Documentation

FWTableViewTableManager::FWTableViewTableManager ( const FWTableView view)

Definition at line 18 of file FWTableViewTableManager.cc.

References FWTextTableCellRenderer::kJustifyRight, FWFramedTextTableCellRenderer::kJustifyRight, m_graphicsContext, m_highlightContext, m_renderer, m_rowFillContext, m_rowRenderer, FWTableView::m_tableWidget, and m_view.

19  : m_view(view),
21  m_renderer(0),
22  m_rowContext(0),
23  m_rowRenderer(0),
24  m_tableFormats(0),
26 {
27  GCValues_t gc = *(m_view->m_tableWidget->GetWhiteGC().GetAttributes());
28  m_graphicsContext = gClient->GetResourcePool()->GetGCPool()->GetGC(&gc,kTRUE);
29  m_highlightContext = gClient->GetResourcePool()->GetGCPool()->GetGC(&gc,kTRUE);
30  m_highlightContext->SetForeground(gVirtualX->GetPixel(kBlue));
31  m_highlightContext->SetBackground(gVirtualX->GetPixel(kBlue));
35  //m_rowContext = gClient->GetResourcePool()->GetGCPool()->GetGC(&gc,kTRUE);
36  //m_rowContext->SetForeground(gVirtualX->GetPixel(kWhite));
37  //m_rowContext->SetBackground(gVirtualX->GetPixel(kBlack));
38  m_rowFillContext = gClient->GetResourcePool()->GetGCPool()->GetGC(&gc,kTRUE);
42 
43 }
FWFramedTextTableCellRenderer * m_rowRenderer
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
FWTextTableCellRenderer * m_renderer
FWTableViewTableManager::~FWTableViewTableManager ( )
virtual

Definition at line 45 of file FWTableViewTableManager.cc.

References m_renderer, and m_rowRenderer.

46 {
47  delete m_renderer;
48  delete m_rowRenderer;
49 }
FWFramedTextTableCellRenderer * m_rowRenderer
FWTextTableCellRenderer * m_renderer
FWTableViewTableManager::FWTableViewTableManager ( const FWTableViewTableManager )
private

Member Function Documentation

FWTableCellRendererBase * FWTableViewTableManager::cellRenderer ( int  iSortedRowNumber,
int  iCol 
) const
virtual
Returns the particular renderer used to handle the requested

cell. Arguments: iSortedRowNumber: the row number from the present sort (i.e. the cell number of the view) iCol: the column number of the cell. The returned value must be used immediately and not held onto since the same Renderer can be used for subsequent calls

Implements FWTableManagerBase.

Definition at line 101 of file FWTableViewTableManager.cc.

References FWColorManager::background(), FWTableViewManager::TableEntry::BOOL, FWViewManagerBase::colorManager(), FWEventItem::ModelInfo::displayProperties(), fwLog, FWTableViewManager::TableEntry::INT, FWTableViewManager::TableEntry::INT_HEX, FWEventItem::ModelInfo::isSelected(), FWDisplayProperties::isVisible(), FWTableView::item(), fwlog::kError, m_caughtExceptionInCellRender, m_evaluators, m_graphicsContext, FWTableView::m_manager, m_renderer, m_tableFormats, m_view, FWEventItem::modelData(), FWEventItem::modelInfo(), run_regression::ret, alignCSCRings::s, FWTextTableCellRenderer::setData(), FWTextTableCellRenderer::setGraphicsContext(), FWEventItem::size(), and unsortedRowNumber().

Referenced by FWTableView::saveImageTo().

102 {
103  const int realRowNumber = unsortedRowNumber(iSortedRowNumber);
104  if (m_view->item() != 0 &&
105  m_view->item()->size() &&
106  m_view->item()->modelData(realRowNumber) != 0 &&
107  iCol < (int)m_evaluators.size()) {
108  double ret;
109  try {
110 // printf("iCol %d, size %d\n", iCol, m_evaluators.size());
111  ret = m_evaluators[iCol].evalExpression(m_view->item()->modelData(realRowNumber));
112  } catch (...) {
114  fwLog(fwlog::kError) << "Error: caught exception in the cell renderer while evaluating an expression. Return -999. Error is suppressed in future\n";
115  }
117  ret = -999;
118  }
119  int precision = m_tableFormats->at(iCol).precision;
120  char s[100];
121  char fs[100];
122  switch (precision) {
124  snprintf(s, sizeof(s), "%d", int(rint(ret)));
125  break;
127  snprintf(s, sizeof(s), "0x%x", int(rint(ret)));
128  break;
130  snprintf(s, sizeof(s), int(rint(ret)) != 0 ? "true" : "false");
131  break;
132  default:
133  snprintf(fs, sizeof(fs), "%%.%df", precision);
134  snprintf(s, sizeof(s), fs, ret);
135  break;
136  }
137  if (not m_view->item()->modelInfo(realRowNumber).isSelected()) {
138  if (m_view->item()->modelInfo(realRowNumber).displayProperties().isVisible())
139  if (m_view->m_manager->colorManager().background() == kBlack) {
141  SetForeground(gVirtualX->GetPixel(kWhite));
142  } else {
144  SetForeground(gVirtualX->GetPixel(kBlack));
145  }
146  else {
147  if (m_view->m_manager->colorManager().background() == kBlack) {
148  m_graphicsContext->SetForeground(0x888888);
149  } else {
150  m_graphicsContext->SetForeground(0x888888);
151  }
152  }
154  } else {
156  SetForeground(0xffffff);
158  }
159  m_renderer->setData(s, m_view->item()->modelInfo(realRowNumber).isSelected());
160  } else {
161  m_renderer->setData("invalid", false);
162  }
163  return m_renderer;
164 }
Color_t background() const
const FWDisplayProperties & displayProperties() const
Definition: FWEventItem.h:67
FWTableViewManager * m_manager
Definition: FWTableView.h:90
virtual int unsortedRowNumber(int iSortedRowNumber) const
bool isSelected() const
Definition: FWEventItem.h:70
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWColorManager & colorManager() const
std::vector< FWExpressionEvaluator > m_evaluators
const FWEventItem * item() const
Definition: FWTableView.cc:578
void setGraphicsContext(const TGGC *iContext)
FWTextTableCellRenderer * m_renderer
void setData(const std::string &, bool isSelected)
size_t size() const
Definition: FWEventItem.cc:562
#define fwLog(_level_)
Definition: fwLog.h:50
const void * modelData(int iIndex) const
Definition: FWEventItem.cc:581
ModelInfo modelInfo(int iIndex) const
Definition: FWEventItem.cc:548
const FWEventItem * FWTableViewTableManager::collection ( ) const
private

Definition at line 52 of file FWTableViewTableManager.cc.

References FWTableView::item(), and m_view.

Referenced by dataChanged(), and numberOfRows().

53 {
54  return m_view->item();
55 }
const FWEventItem * item() const
Definition: FWTableView.cc:578
void FWTableViewTableManager::dataChanged ( )

Called if mouse button pressed in Row Header, defaults is to do nothing.

Call to have table sorted on values in column iCol with the sort order being descending if iSortOrder is 'true' Classes which inherit from FWTableViewTableManager must call this when their underlying data changes

Definition at line 247 of file FWTableViewTableManager.cc.

References assert(), collection(), FWTableManagerBase::dataChanged(), FWEventItem::ModelInfo::displayProperties(), FWEventItem::filterExpression(), FWDisplayProperties::filterPassed(), i, FWDisplayProperties::isVisible(), FWTableView::item(), m_sortedToUnsortedIndices, m_view, FWEventItem::modelInfo(), FWEventItem::showFilteredEntries(), and FWEventItem::size().

Referenced by FWTableView::dataChanged().

248 {
249  if (0!=m_view->item()) {
250  std::vector<int> visible;
251  visible.reserve(m_view->item()->size());
252  std::vector<int> invisible;
253  invisible.reserve(m_view->item()->size());
255  m_sortedToUnsortedIndices.reserve(m_view->item()->size());
256  for(int i=0; i< static_cast<int>(m_view->item()->size()); ++i) {
258  {
260  visible.push_back(i);
261  else invisible.push_back(i);
262  }
263  }
265  visible.begin(), visible.end());
267  invisible.begin(), invisible.end());
268 
271 
272  } else {
274  }
276 }
int i
Definition: DBlmapReader.cc:9
const FWDisplayProperties & displayProperties() const
Definition: FWEventItem.h:67
const FWEventItem * collection() const
std::vector< int > m_sortedToUnsortedIndices
assert(m_qm.get())
const std::string & filterExpression() const
Definition: FWEventItem.cc:616
bool filterPassed() const
void dataChanged()
Classes which inherit from FWTableManagerBase must call this when their underlying data changes...
const FWEventItem * item() const
Definition: FWTableView.cc:578
bool showFilteredEntries() const
Definition: FWEventItem.h:100
size_t size() const
Definition: FWEventItem.cc:562
ModelInfo modelInfo(int iIndex) const
Definition: FWEventItem.cc:548
std::vector< std::string > FWTableViewTableManager::getTitles ( ) const
virtual

returns the title names for each column

Implements FWTableManagerBase.

Definition at line 82 of file FWTableViewTableManager.cc.

References i, m_tableFormats, gen::n, numberOfColumns(), and run_regression::ret.

83 {
84  unsigned int n = numberOfColumns();
85  std::vector<std::string> ret;
86  ret.reserve(n);
87  for (unsigned int i = 0; i < n; ++i) {
88  ret.push_back(m_tableFormats->at(i).name);
89 // printf("%s\n", ret.back().c_str());
90  }
91  return ret;
92 }
int i
Definition: DBlmapReader.cc:9
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
virtual int numberOfColumns() const
Number of columns in the table.
bool FWTableViewTableManager::hasRowHeaders ( ) const
virtual

require all cells to be the same height

for each column in the table this returns the present maximum width for that column Returns 'true' if this table has row headers. Defaults return value is false.

Reimplemented from FWTableManagerBase.

Definition at line 303 of file FWTableViewTableManager.cc.

304 {
305  return true;
306 }
void FWTableViewTableManager::implSort ( int  iCol,
bool  iSortOrder 
)
protectedvirtual

Called by 'sort' method to actually handle the sorting of the rows. Arguments are the same as 'sort'

Implements FWTableManagerBase.

Definition at line 228 of file FWTableViewTableManager.cc.

References FWTableWidget::dataChanged(), FWTableView::item(), m_evaluators, m_sortedToUnsortedIndices, FWTableView::m_tableWidget, m_view, and alignCSCRings::s.

229 {
230  static const bool sort_down = true;
231  if (iCol >= (int)m_evaluators.size())
232  return;
233  if (0!=m_view->item()) {
234  // printf("sorting %s\n", iSortOrder == sort_down ? "down" : "up");
235  if (iSortOrder == sort_down) {
236  std::multimap<std::pair<bool, double>, int, itemOrderGt> s;
237  doSort(*m_view->item(), iCol, m_evaluators, s, m_sortedToUnsortedIndices);
238  } else {
239  std::multimap<std::pair<bool, double>, int, itemOrderLt> s;
240  doSort(*m_view->item(), iCol, m_evaluators, s, m_sortedToUnsortedIndices);
241  }
242  }
244 }
std::vector< int > m_sortedToUnsortedIndices
std::vector< FWExpressionEvaluator > m_evaluators
const FWEventItem * item() const
Definition: FWTableView.cc:578
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
int FWTableViewTableManager::numberOfColumns ( ) const
virtual

Number of columns in the table.

Implements FWTableManagerBase.

Definition at line 77 of file FWTableViewTableManager.cc.

References m_evaluators.

Referenced by getTitles(), FWTableView::saveImageTo(), and FWTableView::setFrom().

78 {
79  return m_evaluators.size();
80 }
std::vector< FWExpressionEvaluator > m_evaluators
int FWTableViewTableManager::numberOfRows ( ) const
virtual

Number of rows in the table.

Implements FWTableManagerBase.

Definition at line 57 of file FWTableViewTableManager.cc.

References collection(), fwrapper::cs, relativeConstraints::empty, cmsHarvester::index, gen::n, and FWEventItem::size().

Referenced by FWTableView::saveImageTo().

58 {
59  if (collection () != 0) {
60  if (collection()->showFilteredEntries() || collection()->filterExpression().empty())
61  {
62  return collection()->size();
63  }
64  else
65  {
66  int cs = collection()->size();
67  int n = 0;
68  for(int index = 0; index < cs; ++index) {
69  if (collection()->modelInfo(index).displayProperties().filterPassed()) { ++n;}
70  }
71  return n;
72  }
73  }
74  else return 0;
75 }
auto_ptr< ClusterSequence > cs
const FWEventItem * collection() const
size_t size() const
Definition: FWEventItem.cc:562
const FWTableViewTableManager& FWTableViewTableManager::operator= ( const FWTableViewTableManager )
private
FWTableCellRendererBase * FWTableViewTableManager::rowHeader ( int  iSortedRowNumber) const
virtual

Returns the renderer for the row header for the sorted row number iSortedRowNumber.

Reimplemented from FWTableManagerBase.

Definition at line 307 of file FWTableViewTableManager.cc.

References FWColorManager::background(), FWViewManagerBase::colorManager(), FWEventItem::ModelInfo::displayProperties(), FWDisplayProperties::isVisible(), FWTableView::item(), m_graphicsContext, FWTableView::m_manager, m_rowFillContext, m_rowRenderer, m_view, FWEventItem::modelData(), FWEventItem::modelInfo(), alignCSCRings::s, FWFramedTextTableCellRenderer::setData(), FWEventItem::size(), and unsortedRowNumber().

308 {
309  const int realRowNumber = unsortedRowNumber(iSortedRowNumber);
310  if (m_view->item() != 0 &&
311  m_view->item()->size() &&
312  m_view->item()->modelData(realRowNumber) != 0) {
313  if (m_view->item()->modelInfo(realRowNumber).displayProperties().isVisible()) {
314  if (m_view->m_manager->colorManager().background() == kBlack) {
316  SetForeground(gVirtualX->GetPixel(kWhite));
317  } else {
319  SetForeground(gVirtualX->GetPixel(kBlack));
320  }
322  SetForeground(gVirtualX->GetPixel(m_view->item()->modelInfo(realRowNumber).
323  displayProperties().color()));
324  } else {
325  m_graphicsContext->SetForeground(0x888888);
327  }
328 
329  std::ostringstream s;
330  s<<realRowNumber;
331  m_rowRenderer->setData(s.str().c_str());
332  } else {
333  m_rowRenderer->setData("");
334  }
335  return m_rowRenderer;
336 }
Color_t background() const
const FWDisplayProperties & displayProperties() const
Definition: FWEventItem.h:67
FWTableViewManager * m_manager
Definition: FWTableView.h:90
virtual int unsortedRowNumber(int iSortedRowNumber) const
FWFramedTextTableCellRenderer * m_rowRenderer
FWColorManager & colorManager() const
const FWEventItem * item() const
Definition: FWTableView.cc:578
size_t size() const
Definition: FWEventItem.cc:562
const void * modelData(int iIndex) const
Definition: FWEventItem.cc:581
ModelInfo modelInfo(int iIndex) const
Definition: FWEventItem.cc:548
int FWTableViewTableManager::unsortedRowNumber ( int  iSortedRowNumber) const
virtual

when passed the index to the sorted order of the rows it returns the original row number from the underlying data

Implements FWTableManagerBase.

Definition at line 94 of file FWTableViewTableManager.cc.

References m_sortedToUnsortedIndices.

Referenced by cellRenderer(), rowHeader(), and FWTableView::saveImageTo().

95 {
96  if (iSortedRowNumber >= (int)m_sortedToUnsortedIndices.size())
97  return 0;
98  return m_sortedToUnsortedIndices[iSortedRowNumber];
99 }
std::vector< int > m_sortedToUnsortedIndices
void FWTableViewTableManager::updateEvaluators ( )

Classes which inherit from FWTableViewTableManager must call this when how the data is shown (e.g. color) changes

Definition at line 278 of file FWTableViewTableManager.cc.

References end, ev, fwLog, i, FWTableViewManager::items(), fwlog::kError, m_evaluators, FWTableView::m_iColl, FWTableView::m_manager, m_tableFormats, m_view, and FWEventItem::modelType().

Referenced by FWTableView::updateEvaluators().

279 {
280  if (m_view->m_iColl == -1) {
281  //printf("what should I do with collection -1?\n");
282  m_evaluators.clear();
283  return;
284  }
285  const FWEventItem *item = m_view->m_manager->items()[m_view->m_iColl];
286  if(0==item) { return;}
287  std::vector<FWExpressionEvaluator> &ev = m_evaluators;
288  ev.clear();
289  for (std::vector<FWTableViewManager::TableEntry>::const_iterator
290  i = m_tableFormats->begin(),
291  end = m_tableFormats->end();
292  i != end; ++i) {
293  try {
294  ev.push_back(FWExpressionEvaluator(i->expression, item->modelType()->GetName()));
295  } catch (...) {
296  fwLog(fwlog::kError) << "expression "<< i->expression << " is not valid, skipping\n";
297  ev.push_back(FWExpressionEvaluator("0", item->modelType()->GetName()));
298  }
299  }
300  //printf("Got evaluators\n");
301 }
int i
Definition: DBlmapReader.cc:9
FWTableViewManager * m_manager
Definition: FWTableView.h:90
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
bool ev
std::vector< FWExpressionEvaluator > m_evaluators
const Items & items() const
#define end
Definition: vmac.h:37
#define fwLog(_level_)
Definition: fwLog.h:50
const TClass * modelType() const
Definition: FWEventItem.cc:575

Friends And Related Function Documentation

friend class FWTableView
friend

Definition at line 33 of file FWTableViewTableManager.h.

Member Data Documentation

bool FWTableViewTableManager::m_caughtExceptionInCellRender
mutableprotected

Definition at line 114 of file FWTableViewTableManager.h.

Referenced by cellRenderer().

std::vector<FWExpressionEvaluator> FWTableViewTableManager::m_evaluators
protected
TGGC* FWTableViewTableManager::m_graphicsContext
protected

Definition at line 100 of file FWTableViewTableManager.h.

Referenced by cellRenderer(), FWTableViewTableManager(), and rowHeader().

TGGC* FWTableViewTableManager::m_highlightContext
protected

Definition at line 101 of file FWTableViewTableManager.h.

Referenced by FWTableViewTableManager().

FWTextTableCellRenderer* FWTableViewTableManager::m_renderer
protected
TGGC* FWTableViewTableManager::m_rowContext
protected

Definition at line 104 of file FWTableViewTableManager.h.

TGGC* FWTableViewTableManager::m_rowFillContext
protected

Definition at line 105 of file FWTableViewTableManager.h.

Referenced by FWTableViewTableManager(), and rowHeader().

FWFramedTextTableCellRenderer* FWTableViewTableManager::m_rowRenderer
protected
std::vector<int> FWTableViewTableManager::m_sortedToUnsortedIndices
protected

Definition at line 97 of file FWTableViewTableManager.h.

Referenced by dataChanged(), implSort(), and unsortedRowNumber().

std::vector<FWTableViewManager::TableEntry>* FWTableViewTableManager::m_tableFormats
protected
const FWTableView* FWTableViewTableManager::m_view
protected