if( recipient != null ) {
// set correct sender identity
for(int x=0; x < getOwnIdentitiesComboBox().getItemCount(); x++) {
final Object obj = getOwnIdentitiesComboBox().getItemAt(x);
if( obj instanceof LocalIdentity ) {
final LocalIdentity li = (LocalIdentity)obj;
if( senderId.getUniqueName().equals(li.getUniqueName()) ) {
getOwnIdentitiesComboBox().setSelectedIndex(x);
break;
}
}
}
getOwnIdentitiesComboBox().setEnabled(false);
// set and lock controls (after we set the identity, the itemlistener would reset the controls!)
sign.setSelected(true);
encrypt.setSelected(true);
buddies.removeAllItems();
buddies.addItem(recipient);
buddies.setSelectedItem(recipient);
// dont allow to disable signing/encryption
encrypt.setEnabled(false);
buddies.setEnabled(false);
} else {
if( isInitializedSigned ) {
// set saved sender identity
for(int x=0; x < getOwnIdentitiesComboBox().getItemCount(); x++) {
final Object obj = getOwnIdentitiesComboBox().getItemAt(x);
if( obj instanceof LocalIdentity ) {
final LocalIdentity li = (LocalIdentity)obj;
if( from.equals(li.getUniqueName()) ) {
getOwnIdentitiesComboBox().setSelectedIndex(x);
sign.setSelected(true);
getOwnIdentitiesComboBox().setEditable(false);
break;
}
}
}
} else {
// initialized unsigned/anonymous
getOwnIdentitiesComboBox().setSelectedIndex(0);
getOwnIdentitiesComboBox().getEditor().setItem(from);
sign.setSelected(false);
getOwnIdentitiesComboBox().setEditable(true);
}
if( sign.isSelected() && buddies.getItemCount() > 0 ) {
encrypt.setEnabled(true);
} else {
encrypt.setEnabled(false);
}
encrypt.setSelected(false);
buddies.setEnabled(false);
}
updateSignToolTip();
// prepare message text
final DateTime now = new DateTime(DateTimeZone.UTC);
final String date = DateFun.FORMAT_DATE_EXT.print(now)
+ " - "
+ DateFun.FORMAT_TIME_EXT.print(now);
final String fromLine = "----- " + from + " ----- " + date + " -----";
final int headerAreaStart = newText.length();// begin of non-modifiable area
newText += fromLine + "\n\n";
final int headerAreaEnd = newText.length() - 2; // end of non-modifiable area
if( altEditText != null ) {
newText += altEditText; // maybe append text entered in alternate editor
}
// later set cursor to this position in text
final int caretPos = newText.length();
// set sig if msg is marked as signed
currentSignature = null;
if( sign.isSelected() ) {
// maybe append a signature
final LocalIdentity li = (LocalIdentity)getOwnIdentitiesComboBox().getSelectedItem();
if( li.getSignature() != null ) {
currentSignature = "\n-- \n" + li.getSignature();
newText += currentSignature;
}
}
messageTextArea.setText(newText);