`
hn_liuyi
  • 浏览: 32690 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)七

阅读更多

第七 篇:使用 AlarmTable 组件

Alarm table 组件,是一个继承自 TWaver table,AlarmTable 被用于展示 alarm 对象, Alarm table 联合一个 DataBox 可以从该 DataBox 中获取所有的 alarm 对象,然后在表格的对应的列上罗列出 来。

Alarm table 是来自与 Twaver table, 所以它具有了所有的基本表格的功能,如:自定义列,排序,分页控 制,锁定,弹出菜单和过滤器。可以参考上面的表格使用

创建一个 AlarmTable 组件

通常情况下我们需要一个 DataBox 去创建一个 AlarmTable, 这样的话表格就需要连接到一个 DataBox 显示和监测预警模型的 DataBox ,根据下面的代码段可以创建一个 alarm table 组件并展示在一个 JFrame 里面

JFrame frame = new JFrame("Alarm Table");

TDataBox box = new TDataBox();

TAlarmTable table = new TAlarmTable(box);

frame.setContentPane(new JScrollPane(table));

frame.setSize(400, 100);

TWaverUtil.centerWindow(frame);

frame.show();

图片

AlarmTable 组件的构造器:

                
  

方法

  
  

描述

  
  

TAlarmTable(TDataBox box)

  
  

创建一个连接 DataBox 带有默认列的告警表格

  
  

TAlarmTable(TDataBox box,String tableName)

  
  

创建一个告警表格 , 这个告 警表格连接着一个指定的 DataBox, 并且带着一个配置在 TWaver.xml 里面的 tableName

  
  

TAlarmTable(TDataBox box,TTableColumn[] columns)

  
  

以给定的列创建一个 AlarmTable, AlarmTable 连接着一个指定的 DataBox

  

有一些默认的列,这些列 默认状态是可见的:

Alarm.PROPERTY_ALARM_ALARMID// 告警 ID

Alarm.PROPERTY_ALARMSERVERITY// 告警级别列

Alarm.PROPERTY_ACKED// 告警确认状态列,该列为复选框

Alarm.PROPERTY_ELEMENTID// 告警对象 ID

Alarm.PROPERTY_PROBABLECAUSE// 告警原因列

private static TTableColumn[] createDefaultColumns() {

return new TTableColumn[] {

createColumn(Alarm.PROPERTY_ALARMID, 60, true),// 告警 ID ,宽度 60 ,显示为 true;

createColumn(Alarm.PROPERTY_ALARMSEVERITY, 100, true),// 告警级 别列

createColumn(Alarm.PROPERTY_ACKED, 50, true).// 告警确认 状态列。

setRenderer(new AcknowledgedRenderer()),// 设置 Renderer AcknowledgedRenderer

createColumn(Alarm.PROPERTY_ELEMENTID, 100, true).

// 设置 ELEMENTID

setRenderer(new ElementIDRenderer()),// 设置 ElementIDRenderer

createColumn(Alarm.PROPERTY_PROBABLECAUSE, 300, true),// 创建告警理由列

createColumn(Alarm.PROPERTY_ACKUSERID, 80, false),

// 告警确认用户 ID 列,不显示

createColumn(Alarm.PROPERTY_CLEARUSERID, 60, false),

// 清除告警用户 ID 列,不显示

createColumn(Alarm.PROPERTY_CLEARED, 40, false),

//

createColumn(Alarm.PROPERTY_ALARMTYPE, 60, false),

// 告警类型列,不显示

createColumn(Alarm.PROPERTY_TRENDINDICATION, 40, false),

createColumn(Alarm.PROPERTY_RAISEDTIME, 120, false),

// 告警升级时间列

createColumn(Alarm.PROPERTY_ACKTIME, 120, false),

// 告警确认时间列

createColumn(Alarm.PROPERTY_CLEAREDTIME, 120, false),

// 告警清楚时间列

createColumn(Alarm.PROPERTY_LASTCHANGEDTIME, 120, false),// 告警 最新修改时间 列

createColumn(Alarm.PROPERTY_CORRELATEDALARMS, 60, false),// 告警关 联告警列

createColumn(Alarm.PROPERTY_SPECIFICPROBLEM, 200, false),//

createColumn(Alarm.PROPERTY_ADDITIONALTEXT, 200, false),//

createColumn(Alarm.PROPERTY_COMMENTS, 200, false),

// 告警注释列

createColumn(Alarm.PROPERTY_PROPOSEDREPAIRACTION, 200, false),//

};

}

private static TTableColumn createColumn

(String name, int width, boolean visible) {

return new TTableColumn(name,

TWaverUtil.getString("alarm.property." + name), width).

setVisible(visible);

}

DataBox AlarmModel 联合工作

一旦创建了关联到 DataBox AlarmTable, 她将展示该 DataBox 里面的告警信息。我们知道所有告警信息都被 DataBox alarm model 所管理。所以说, alarm table 是一个被 DataBox alarm model 所驱动的组件

在告警 model 里,每个告警都被展示到表格的一行上,现在我们创建几个告警信 息并把他们放到 alarm model 中,看看在 alarm table 上将会发生什么

Node node5 = new Node();

box.addElement(node5);

node5.getAlarmState().clear();

for (int i = 0; i < 4; i++) {

AlarmSeverity severity = TWaverUtil.getRandomNonClearedSeverity ();

Alarm alarm = new Alarm(new Integer(50 + i * 10), node5.getID(), severity);

box.getAlarmModel().addAlarm(alarm);

}

图片

设置 DataBox:public void setDataBox(TDataBox box); 这里本人做个补充: Twaver 的人不会告诉你这里有一个性能优化的大用处,如果你生成表格的时候,就把 DataBox 和表格连接起来的话,再往表格里面放数据的话,性能是很慢的,如果一开始把表格和 DataBox 分开,先往 DataBox 实例里放数据,把数据放完之后,在使用该设置 databox 的方法,把表格和 DataBox 连接起来,界面展现很快。

设置 DataBox columns 使用这个方法:

public void setDataBox(TDataBox box,TTableColumn[] columns);

使用告警过滤器

在表格的过滤器里说过了这个过滤器,可以根据 alarm 对 象的所有属性来进行过滤, return false 即隐藏, true 为可见

TAlarmTable table = new TAlarmTable(box);

table.addVisibleFilter(new AlarmVisibleFilter(){

public boolean isVisible(Alarm alarm) {

return alarm.getAlarmSeverity()==AlarmSeverity.CRITICAL;

}

});

自定义 Alarm table 组件

默认的 alarm table 已经可以很好的支持呈现现 有的告警,包括使用默认可见的列,优先的列宽, cell renderers editors ,弹出菜单等等。但是你经常会去改变默认的设置去自己特殊的需 求。 在使用表组件部分中提及的所有功能都可以自定义在这里,请详见它

这里我们给出一个例子展 示一下怎么去定义一些告警新属性并展示在 alarm table 的自定义的列中

l       添加 alarm 对象的属性“ customIcon

l       alarm table 里展示“ customIcon

l       设置 user icon renderer 属性 customIcon

l       根据用户的 list 来改变 customIcon ”属性

定义“ customIcon ”属性

我们先定义一个 CustomIcon 类来封装 customIcon ”属性信息

class CustomIcon {

private String name = null ;

private Icon icon = null ;

public CustomIcon(String name, Icon icon) {

this .name = name;

this .icon = icon;

}

String getName() {

return name;

}

void setName(String name) {

this .name = name;

}

Icon getIcon() {

return icon;

}

void setIcon(Icon icon) {

this .icon = icon;

}

}

然后我们需要将 “customIcon” 信息附贴到 alarm 对象上,你可以使用一个标准的 java bean 作为一个属性附加到 alarm 对象上,就像 Alarm.setCustomIcon Alarm.getCustomIcon 一样,如下:

f or (int i = 1; i < 5; i++) {

AlarmSeverity severity = TWaverUtil.getRandomNonClearedSeverity ();

Alarm alarm = new Alarm(new Integer(50 + i * 10), node5.getID(), severity);

alarm.putClientProperty("CustomIcon", new CustomIcon("Icon_"+i,

TWaverUtil.getIcon ("/demo/resource/images/attachment" + i + ".png")));

box.getAlarmModel().addAlarm(alarm);

}

添加“ CustomIcon ”列

为了在表格上展示 CustomIcon 属性,我们需要创建一个表格列并把它加到 table Model 中。非常简单:、

TTableColumn ownerColumn = new TTableColumn("CustomIcon", "CustomIcon");// 列 展示名字 // 和列 名都为 CustomIcon

ownerColumn.setPreferredWidth(50);

alarmTable.getTableModel().addColumn(ownerColumn);

Twaverujian 将会试着获取“ customIcon ”属性从 Alarm 对象上,该对象携带者 java beans ,如果没有发现,将会试着 从客户端属性获取,如下

图片

 

Column 设置 Renderer Editor

到目前为止,属性已经展示到了 alarm table 上,为了能够用一种更友好的方式 renderer editor 属性“ customIcon ”,我们现在创建并设置 renderer editor 到新的列上。

// 创建 设置一个 renderer

ownerColumn.setRenderer(new DefaulstTableCellRenderer(){

public Component getTableCellRendererComponent(JTable,Object value,Boolean isSelected,Boolean hasFocus,int row,int column){

JLabel label = (JLabel)super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);

if(value instanceof CustomIcon){

                                  CustomIcon owner =(CustomIcon)value;

                                  label.setIcon(owner.getIcon);

                                  label.setText(owner.getName());

}

return label;

}

});

图片

创建设置一个 editor

//1. 设 置 editable

ownerColumn.setEditable(true);

// 创建 一个 JComboBox 作为一个 Editor

JComboBox options = new JComboBox();

for(int i=1;i<5;i++){

options.addItem(new CustomIcon(“Icon_”+i,TWaverUtil.getIcon( getIcon ("/demo/resource/images/attachment" + i + ".png" )));

}

// JComboBox 创建一个 Renderer

Options.setRenderer(new DefaultListCellRenderer(){

     Public Component getListCellRendererComponent(JList list,Objcet value,int index,Boolean isSelected,Boolean cellHasFous){

  Super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);

if(value instanceof CustomIcon){

   CustomIcon icon = (CustomIcon) value;

this.setIcon(icon.getIcon);

this.setText(icon.getName);

}

return this;

}

});

//4. 创 建 Editor 并设置到列上

ownerColumn.setEditor(new DefaultCellEditor(options));

图片

0
3
分享到:
评论

相关推荐

    TWaver_Flex中文帮助文档

    TWaver Flex中的告警功能是该组件的一个重要组成部分,文档中讲解了告警的使用,包括告警级别、状态与统计、以及告警的呈现方式。 ### 版权声明和使用许可 文档中也明确了版权信息和版权声明,强调了文档是...

    TWaver HTML5 Developer Guide

    在视图组件部分,文档将介绍Network、Tree和Table三种主要组件的介绍,这些组件是构建可视化界面的核心。Network组件用于展示网络拓扑结构,Tree组件用于构建树形结构,而Table组件用于展示和操作表格数据。 数据...

    TWaver_Web_4.0中文开发手册

    - **前台 Table 组件**、**前台 Tree 组件**、**前台 Sheet 组件**、**前台 AlarmTable**、**前台 AlarmOverview 组件** 等章节详细介绍了如何将 TWaver Web 的功能与 ExtJS 的各种组件集成,以实现复杂的应用场景。...

    twaver flex中文文档

    3. **组件入门级实例**:TWaver Flex 提供了多种预定义的组件,如Network、Table 和 Tree等。这些组件可以通过简单的代码实例快速实现图形界面的基本功能。 #### TWaver Flex 开发环境 TWaver Flex 的开发环境主要...

    TWaver Java 3.7 Developer Guide

    《TWaver Java 3.7 开发者指南》是一份详尽的技术文档,旨在为开发者提供使用TWaver Java 3.7版本进行网络、图表、数据管理和用户界面设计的全面指导。TWaver Java是一个功能丰富的可视化组件库,适用于构建复杂的...

    Twaver java developer guide.pdf

    TWaver组件主要分为以下几个部分: - NetworkComponent(网络组件):用于展示网络拓扑结构,支持图形化展示网络设备和链路。 - TreeComponent(树形组件):实现树形结构的数据展示,常用于展示层次化或分组的数据...

    Flex Twaver 入门指南中文版

    通过以上详细介绍,可以看出 Flex Twaver 不仅提供了一套完整的组件库来满足电信网管系统的需求,还通过丰富的文档和示例帮助开发者快速上手。无论是对于初学者还是有经验的开发人员来说,都是一款值得深入探索的...

    TWare pdf TWare pdf

    根据提供的文件信息,我们可以推断出这是一份关于TWaver™ Java Developer Guide的文档,主要介绍了TWaver™软件的相关信息及使用指南。由于标题和描述部分的信息非常有限且重复,我们将依据这部分内容来构建相关...

Global site tag (gtag.js) - Google Analytics