IIIMF CommonAux UI description Draft

Target Aux

  • Palette
  • IM Configration dialog.
  • Preedit, Virtual Keyboard etc. will use pre-defined implementation.

Data type and supported renderType

type/tag:renderType:
stringlabel, lineEdit, textArea, passwd, file, font
intspinButton, progressBar, sliderBar, color
booleantoggleButton
(in check menu group, it's checkMenuItem;
while in radio menu group, it's radioMenuItem)
commandpushButton, URLLink
(in menu group, it's normal menuitem)
groupmenu, tab, card, folder, frame
checkGroupcheckGroup(default), listBox, menu
(only contains boolean item)
radioGroupradioGroup(default), listBox, comboBox, menu
(only contains boolean item)

Composite pattern

+--------------+
| propertyItem |
+--------------+
| key/id/*     |
| label        |           +---------------+
| value        |<|-------<>| propertyGroup |
| type*        |           +---------------+
| renderType*  |           | layout        | (Horizental, Vertical)
| tooltip      |           | children      |
| icon         |           +---------------+
| state        |
| visible      |
+--------------+

Example 1: A radio group

<!-- The value of this radioGroup is the selected key. -->
<radioGroup id="radioGroup1" renderType="listBox">
  <boolean id="key1" label="key1" value="val1"/>
  <boolean id="key2" label="key2" value="val2"/>
  <boolean id="key3" label="key3" value="val3"/>
</radioGroup>

Example 2: A check group

<!-- checkGroup does not have value of itself -->
<checkGroup id="checkGroup1" renderType="checkGroup">
  <boolean id="key4" label="key4" value="val4"/>
  <boolean id="key5" label="key5" value="val5"/>
  <boolean id="key6" label="key6" value="val6"/>
</checkGroup>

Example 3: IM palette

<group id="palette" layout="Horizental">
  <boolean id="Eng_Ch" label="中英" icon="Chinese.jpg" renderType="toggleButton"/>
  <boolean id="Full_Half" label="全半角" icon="Full.jpg" renderType="toggleButton"/>
  <group id="menu1" renderType="menu>
    <group id="subMenu1" label="subMenu1" renderType="menu">
      <command id="cmd1" label="cmd1"/>
      <command id="cmd2" label="cmd2"/>
      <checkGroup id="subMenu2" label="subMenu2" renderType="menu">
        <boolean id="key7" lable="key7" value="val7"/>
        <boolean id="key8" label="key8" value="val8"/>
      </checkGroup>
    </group>
    <!-- anonymous group (i.e. label is empty) here is a flat menu group, not cascading submenu -->
    <radioGroup id="nolabel1" renderType="menu">
      <boolean id="key9" label="key9" value="val9"/>
      <boolean id="key10" label="key10" value="val10"/>
      <boolean id="key11" label="key11" value="val10"/>
    </radioGroup>
    <command id="cmd3" label="cmd3"/>
  </group>
</group>
+---+---+-------+
|E/C|F/H| Menu1 |
+---+---+-------+------+
          | subMenu1 >+------------+
          +-----------| cmd1       |
          | * key9    | cmd2       |
          | * key10   | subMenu2 >+---------+
          | * key11   +-----------| [] key7 |
          +------------+          | [] key8 |
          | cmd3       |          +---------+
          +------------+

Example 4: IM Configuration Dialog

<group id="im_config" label="IME Configuration" renderType="frame">
  <group id="tabs" renderType="tab">
    <group id="tab1" label="tab1">
      <radioGroup id="input_style" label="Input Style" renderType="comboBox">
        <boolean id="classic_style" label="Classic Style"/>
        <boolean id="converting_on_fly" label="Converting on Fly"/>
      </radioGropu>
      <radioGroup id="charset" label="Charset" renderType="comboBox">
        <boolean id="gb2312" label="GB2312"/>
        <boolean id="gbk" label="GBK"/>
      </radioGroup>
    </group>
    <group id="tab2" label="tab2">
    </group>
  </group>
</group>

How to calculate the size of a group?

void group_size (group, w, h)
{
  w = h = 0;
  for (item in group) {
    int x, y;
    if (item is group)
      group_size (group, x, y) /* recursive call */
    else
      item_size (item, x, y) /* icon size, label string size */
    if (group.layout = Horizental) {
      h = max (h, y);
      w += x;
    } else { /* default is Vertical */
      w = max (w, x);
      h += y;
    }
  }
}

How to locate the icon?

iiimp://iiim_server_hostname_or_IP/le_name/the/relative/path/under/le
e.g., iiimp://localhost/cle/images/full.png

OpenSolaris plus gnu/gnome

OpenSolaris launched in blogs.sun.com. And from OpenSolaris.org, you could see that you will be able build OpenSolaris with gcc tools in future.

I am not an OS expert :) , but personally, I think someone may have
interests to build an OpenSolaris distribution with OpenSolaris kernel
and admin tools plus gnu software stack, including gnu libc (is it
possible?) ,gnu shell utilities, Xorg (does not belong to Gnu; Solaris 10 x64 are using xorg),
Gnome desktop environment (Solaris 10 already bundled Gnome 2.6).
Actually, you could download many opensource softwares from
http://www.sunfreeware.com.

At last, welcome to Internationalization and Localization community for OpenSolaris!

今天的好消息

今天收到了两个好消息,一是我独立翻译的第一本Java工具书 "Struts Kick Start 中文版"
要第二次印刷了,也就是说第一刷的6000册售完了,我的第二部分稿费也有眉目了 :) 。另一个好消息是,我和蔡云志合译的 "Mastering JavaServer Faces 中文版" 今天要制作胶片了,出版在即了。呵呵。