void GPMProcessTreeList::SelectProcess ( const GPMProcessEntry& entry ) { JTableSelection& s = GetTableSelection(); s.ClearSelection(); GetTreeList()->MakeVisible(&entry); JIndex index; if (GetTreeList()->FindNode(&entry, &index)) { s.SelectRow(index); ScrollToNode(&entry); } }
void JXToolBarEditWidget::HandleMouseDown ( const JPoint& pt, const JXMouseButton button, const JSize clickCount, const JXButtonStates& buttonStates, const JXKeyModifiers& modifiers ) { JPoint cell; if (GetCell(pt, &cell)) { JTreeNode* node = GetTreeList()->GetNode(cell.y); if (cell.x == 2 && button == kJXLeftButton && !node->IsOpenable()) { JXToolBarNode* tbnode = dynamic_cast(JXToolBarNode*, node); assert(tbnode != NULL); tbnode->ToggleChecked(); }
JBoolean JXToolBarEditWidget::GetImage ( const JIndex index, const JXImage** image ) const { const JTreeNode* node = GetTreeList()->GetNode(index); if (node->IsOpenable()) { *image = itsMenuImage; return kJTrue; } const JXToolBarNode* tbnode = dynamic_cast(const JXToolBarNode*, node); assert( tbnode != NULL ); *image = tbnode->IsChecked() ? itsCheckedItemImage : itsUncheckedItemImage; return kJTrue; }
void GPMProcessTreeList::Receive ( JBroadcaster* sender, const Message& message ) { if (sender == itsList && message.Is(GPMProcessList::kPrepareForUpdate)) { if (itsSelectedEntry != NULL) { StopListening(itsSelectedEntry); itsSelectedEntry = NULL; } if (GetSelectedProcess(&itsSelectedEntry)) { ClearWhenGoingAway(itsSelectedEntry, &itsSelectedEntry); } } else if (sender == itsList && message.Is(GPMProcessList::kListChanged)) { JTableSelection& s = GetTableSelection(); s.ClearSelection(); JIndex index; if (itsSelectedEntry != NULL && GetTreeList()->FindNode(itsSelectedEntry, &index)) { s.SelectRow(index); StopListening(itsSelectedEntry); itsSelectedEntry = NULL; } Refresh(); } else if (sender == itsContextMenu && message.Is(JXMenu::kNeedsUpdate)) { UpdateContextMenu(); } else if (sender == itsContextMenu && message.Is(JXMenu::kItemSelected)) { const JXMenu::ItemSelected* selection = dynamic_cast<const JXMenu::ItemSelected*>(&message); assert( selection != NULL ); HandleContextMenu(selection->GetIndex()); } else { if (sender == &(GetTableSelection()) && message.Is(JTableData::kRectChanged)) { const GPMProcessEntry* entry; if (IsVisible() && GetSelectedProcess(&entry)) { itsFullCmdDisplay->SetText(entry->GetFullCommand()); } } JXNamedTreeListWidget::Receive(sender, message); } }
void GPMProcessTreeList::TableDrawCell ( JPainter& p, const JPoint& cell, const JRect& rect ) { GPMProcessTable::DrawRowBackground(p, cell, rect, (p.GetColormap())->GetGrayColor(95)); if (cell.x == GPMProcessList::kTreeOpenClose || cell.x == GPMProcessList::kTreeCommand) { JXNamedTreeListWidget::TableDrawCell(p, cell, rect); return; } HilightIfSelected(p, cell, rect); const JTreeNode* node = GetTreeList()->GetNode(cell.y); const GPMProcessEntry& entry = * dynamic_cast<const GPMProcessEntry*>(node); JString str; JPainter::HAlignment halign = JPainter::kHAlignRight; if (cell.x == GPMProcessList::kTreeState) { GPMProcessTable::DrawProcessState(entry, p, rect, *itsZombieImage); } else if (cell.x == GPMProcessList::kTreePID) { str = JString(entry.GetPID(), JString::kBase10); } else if (cell.x == GPMProcessList::kTreeUser) { str = entry.GetUser(); halign = JPainter::kHAlignLeft; } /* else if (cell.x == GPMProcessList::kTreePPID) { str = JString(entry.GetPPID(), JString::kBase10); } else if (cell.x == GPMProcessList::kTreePriority) { str = JString(entry.GetPriority(), JString::kBase10); } */ else if (cell.x == GPMProcessList::kTreeNice) { str = JString(entry.GetNice(), JString::kBase10); } else if (cell.x == GPMProcessList::kTreeSize) { str = JString(entry.GetSize(), JString::kBase10); } /* else if (cell.x == GPMProcessList::kTreeResident) { str = JString(entry.GetResident(), JString::kBase10); } else if (cell.x == GPMProcessList::kTreeShare) { str = JString(entry.GetShare(), JString::kBase10); } */ else if (cell.x == GPMProcessList::kTreeCPU) { str = JString(entry.GetPercentCPU(), 1); } else if (cell.x == GPMProcessList::kTreeMemory) { str = JString(entry.GetPercentMemory(), 1); } else if (cell.x == GPMProcessList::kTreeTime) { str = JString(entry.GetTime(), JString::kBase10); } JRect r = rect; r.left += kHMarginWidth; r.right -= kHMarginWidth; p.JPainter::String(r, str, halign, JPainter::kVAlignCenter); }