如何在RAP / RWT

时间:2016-05-21 00:19:39

标签: swt badge eclipse-rap

我在尝试在RAP应用程序中获取多个徽章时遇到了很多问题。 在RAP中应用徽章:

someButton.setData(RWT.BADGE, "badge colored red");

我也想设置徽章的位置,但请注意下方没有徽章CSS支持位置。

RAP状态的限制:

  

要调整徽章的外观(见上文),可以使用“Widget-Badge”元素。它目前支持属性字体,颜色,背景颜色,边框和边框半径。

我已经进入了打包的default.css并使用以下方法自定义了Widget-Badge:

Widget-Badge {
  background-color: #dd0000;
  border: none;
  border-radius: 10px;
  font: 10px Verdana, "Lucida Sans", Arial, Helvetica, sans-serif;
  color: #ffffff;
  border-top: 12px solid blue; 
  border-left: 12px solid transparent;
}

将工具提示设置为始终显示和偏移的另一种尝试,但似乎无法使工具提示背景透明(我必须创建自定义变体):

Button.setToolTipText("<span style='background-color: #dd0000;border: none;border-radius: 10px;font: 10px Verdana, Arial, Helvetica, sans-serif;border-top: 0px solid transparent;border-left: 12px solid blue;'>"+00+"</span>");

我已经考虑使用裁剪区域绘制事件来绘制具有不同样式的徽章,但需要进行大量代码更改。

----编辑1 ---- 不完全得到所需的输出。

我正在调查:

static void setTestId( Widget widget, String value ) {
  if( uiTestsEnabled && !widget.isDisposed() ) {
    String $el = widget instanceof Text ? "$input" : "$el";
    String id = WidgetUtil.getId( widget );
    exec( "rap.getObject( '", id, "' ).", $el, ".attr( 'test-id', '", value + "' );" );
  }
}

private static void exec( String... strings ) {
  StringBuilder builder = new StringBuilder();
  builder.append( "try{" );
  for( String str : strings ) {
    builder.append( str );
  }
  builder.append( "}catch(e){}" );
  JavaScriptExecutor executor = RWT.getClient().getService( JavaScriptExecutor.class );
  executor.execute( builder.toString() );
}

看看我是否可以获得难以捉摸的RAP“在DOM级别上看不到的生成的id”,以便我可以进行后期渲染CSS操作。

我也调查过:

button.setData(SWT.SKIN_ID, "customID");

但似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:0)

控制徽章的位置似乎是一个有用的功能,您可能希望file an enhancement request看看RAP维护者的想法。

缺少徽章定位的另一种可能的解决方法可能是ControlDecoration

您可以指定应放在控件旁边的任意图像。 SWT.TOPSWT.BOTTOMSWT.LEFTSWT.RIGHTSWT.CENTER的组合可用于指定展示位置。你可能需要动态创建合适的图像来渲染&#39;数字。

ControlDecoration的另一个不同之处在于它放在控件的旁边,而不是部分位于控件之上。