Hallo,
ich implementiere gerade ein kleines Applet, dass User und Rollen administriert.
Die GUI hat eine User (Username, 1 Col)-Tabelle und eine Rollen(RoleName, isUser, isManager, 3Col)-Tabelle .
Die Rollen-Tabelle hat in den Zeilen 2 und 3, isUser und isManager respektive Button, die Checkboxen darstellen.
Hier der Code, wie die Tabelle gefüllt wird:
Ich versuche, wenn man einen User auswählt, dass die entsprechenden Checkboxen in der Rollen-Tabelle geticked werden, so dass man sieht, in welcher Rolle der User user(isUser) und manager(isManager) ist.
Meine Frage:
Wie komme ich an die Checkboxen?
Ich bin echt am verzweifeln.
Hier der Code des Listeners(MouseListener auf die Rollen-Tabelle), wenn man einen User auswählt:
und
Ich bin für jede Hilfe dankbar, weil ich, ehrlich gesagt, dass SWT Konzept nicht ganz verstehe. Es ist sehr undurchsichtlich.
Danke und Gruss,
Tom
ich implementiere gerade ein kleines Applet, dass User und Rollen administriert.
Die GUI hat eine User (Username, 1 Col)-Tabelle und eine Rollen(RoleName, isUser, isManager, 3Col)-Tabelle .
Die Rollen-Tabelle hat in den Zeilen 2 und 3, isUser und isManager respektive Button, die Checkboxen darstellen.
Hier der Code, wie die Tabelle gefüllt wird:
Code:
private void fillRoleTableWithRoles(){
int counter = 0;
Table roleTable = roleTableViewer.getTable();
TableEditor[] editorsUser = new TableEditor[data.getRoles().size()];
TableEditor[] editorsManager = new TableEditor[data.getRoles().size()];
Iterator it = data.getRoles().iterator();
while(it.hasNext()) {
IRole role = (IRole) it.next();
TableItem tmpRoleItem = new TableItem(roleTable, SWT.LEFT);
final TableEditor userCBEditor = new TableEditor(roleTable);
userCBEditor.setColumn(1);
userCBEditor.setItem(tmpRoleItem);
editorsUser[counter] = userCBEditor;
final TableEditor managerCBEditor = new TableEditor(roleTable);
managerCBEditor.setColumn(2);
managerCBEditor.setItem(tmpRoleItem);
editorsManager[counter] = managerCBEditor;
final Button userCheckBox = new Button(roleTable, SWT.CHECK);
userCheckBox.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
if(userCheckBox.getSelection()){
System.out.println("Add selected User to role as a user");
} else {
System.out.println("Remove selected User to role as a user");
}
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
Button managerCheckBox = new Button(roleTable, SWT.CHECK);
userCheckBox.pack();
managerCheckBox.pack();
userCBEditor.minimumWidth = userCheckBox.getSize().x;
managerCBEditor.minimumWidth = userCheckBox.getSize().x;
//Set up the row
tmpRoleItem.setText(0, role.getName());
userCBEditor.setEditor(userCheckBox, tmpRoleItem, 1);
managerCBEditor.setEditor(managerCheckBox, tmpRoleItem, 2);
counter++;
}
//Set the editors to the roleTableViewer for later use.
roleTableViewer.setData("editorsUser", editorsUser);
roleTableViewer.setData("editorsManager", editorsManager);
}
Ich versuche, wenn man einen User auswählt, dass die entsprechenden Checkboxen in der Rollen-Tabelle geticked werden, so dass man sieht, in welcher Rolle der User user(isUser) und manager(isManager) ist.
Meine Frage:
Wie komme ich an die Checkboxen?
Ich bin echt am verzweifeln.
Hier der Code des Listeners(MouseListener auf die Rollen-Tabelle), wenn man einen User auswählt:
Code:
public void mouseDown(MouseEvent e) {
int indexInUserTable = userTableViewer.getTable().getSelectionIndex();
if(indexInUserTable > -1) {
TableItem selectedUser = userTableViewer.getTable().getItem(indexInUserTable);
IUser user = (IUser) selectedUser.getData();
Collection managerRoles = data.getManagerRolesForUser(user.getUserId());
Collection memberRoles = data.getMemberRolesForUser(user.getUserId());
setManagerCheckedInRoleTable(managerRoles);
}
}
und
Code:
private void setManagerCheckedInRoleTable(Collection managerRoles) {
Table roleTable = roleTableViewer.getTable();
TableItem[] items = roleTable.getItems();
TableEditor[] editors = (TableEditor[]) roleTableViewer.getData("editorsManager");
for(int i=0;i<items.length;i++) {
TableItem currentItem = items[i];
if( managerRoles.contains(currentItem.getText()) ){
TableEditor editor = editors[i];
}
}
}
Ich bin für jede Hilfe dankbar, weil ich, ehrlich gesagt, dass SWT Konzept nicht ganz verstehe. Es ist sehr undurchsichtlich.
Danke und Gruss,
Tom