event handling with swixml
[email protected] Tue, 23 Aug 2005 17:15:59 +0200
| Newsgroups | gmane.comp.embedded.carlsbad-cubes |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_2333_17650554.1124810159268 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi, I know this question (see subj.) was already raised couple of times but I would like to discuss it one more time. First let me say that I agree with the statement that we should not do any= =20 scripting in xml file. Personally I don't like the idea of incorporating BeanShell, Groovy or any other scripting language into gui descriptor file. swixml should probably remain purely declarative language. But still would be nice to ease event handling. So when I'm talking about adding some feature into framework that facilitate work with events I would call this feature 'binding' rather then scripting. The concept would be in a way similar to the automatic fields mapping which swixml does now. Similarly we could have swixml mapping gui events to proper methods in client's class. For example syntax could look like this: <textfield id=3D"myText" keyPressed=3D"handleKeyPressed"/> or=20 <label id=3D"myLabel" mousePressed=3D"handleMousePressed" /> where myText and myLabel are fields while handleKeyPressed and handleMousePressed are methods in client object. Actually we've implemented this kind of extension in our project and it serves quite good so far. In fact it didn't require a lot of coding so adding it to the siwxml core won't add much complexity to the project. I'm sending a patch here. As you can see it has only one extra class and few lines added to Parser class. I'd be happy if swixml's authors could spare some time to consider the patc= h. If you need more examples let me know. Thanks in advance, Vitali ------=_Part_2333_17650554.1124810159268 Content-Type: application/octet-stream; name=".diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=".diff" ZGlmZiAtTkViYyAtSSAnJElkJyAtSSAnJFJldmlzaW9uJyBzd2l4bWxfMTQ0L3NyYy9vcmcvc3dp eG1sL0V2ZW50SGFuZGxlci5qYXZhIHN3aXhtbF9leHQvc3JjL29yZy9zd2l4bWwvRXZlbnRIYW5k bGVyLmphdmENCioqKiBzd2l4bWxfMTQ0L3NyYy9vcmcvc3dpeG1sL0V2ZW50SGFuZGxlci5qYXZh CVRodSBKYW4gIDEgMDE6MDA6MDAgMTk3MA0KLS0tIHN3aXhtbF9leHQvc3JjL29yZy9zd2l4bWwv RXZlbnRIYW5kbGVyLmphdmEJVHVlIEF1ZyAyMyAxNToxMjozMSAyMDA1DQoqKioqKioqKioqKioq KioNCioqKiAwICoqKioNCi0tLSAxLDI5MCAtLS0tDQorIHBhY2thZ2Ugb3JnLnN3aXhtbDsNCisg DQorIGltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50Ow0KKyBpbXBvcnQgamF2YS5hd3Qu ZXZlbnQuTW91c2VNb3Rpb25MaXN0ZW5lcjsNCisgaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lklu dm9jYXRpb25IYW5kbGVyOw0KKyBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRh cmdldEV4Y2VwdGlvbjsNCisgaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsNCisgaW1w b3J0IGphdmEubGFuZy5yZWZsZWN0LlByb3h5Ow0KKyBpbXBvcnQgamF2YS51dGlsLkV2ZW50TGlz dGVuZXI7DQorIGltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsNCisgDQor IGltcG9ydCBqYXZheC5zd2luZy5KTGlzdDsNCisgaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50Lkxp c3RTZWxlY3Rpb25FdmVudDsNCisgaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50Lkxpc3RTZWxlY3Rp b25MaXN0ZW5lcjsNCisgDQorIHB1YmxpYyBjbGFzcyBFdmVudEhhbmRsZXIgaW1wbGVtZW50cyBJ bnZvY2F0aW9uSGFuZGxlciB7DQorIAkJDQorIAlwcml2YXRlIFN0cmluZyBfbGlzdGVuZXJNZXRo b2ROYW1lOw0KKyAJcHJpdmF0ZSBPYmplY3QgX2NsaWVudDsgLy9pbiBvdGhlciB0ZXJtaW5vbG9n eSAtIHRhcmdldCBvYmplY3QuIA0KKyAJcHJpdmF0ZSBNZXRob2QgX2hhbmRsZXI7DQorIA0KKyAJ LyoqDQorIAkgKiBDbGllbnRzIHNob3VsZCB1c2Ugc3RhdGljIGNyZWF0ZSBtZXRob2QuDQorIAkg KiBAc2VlICNjcmVhdGUNCisgCSAqLw0KKyAJcHJpdmF0ZSBFdmVudEhhbmRsZXIoQ2xhc3MgbGlz dGVuZXJJbnRlcmZhY2UsIFN0cmluZyBsaXN0ZW5lck1ldGhvZE5hbWUsIE9iamVjdCBjbGllbnQs IFN0cmluZyBoYW5kbGVyKSB7DQorIAkJX2xpc3RlbmVyTWV0aG9kTmFtZSA9IGxpc3RlbmVyTWV0 aG9kTmFtZTsNCisgCQlfY2xpZW50ID0gY2xpZW50Ow0KKyANCisgCQlDbGFzcyBldmVudENsYXNz ID0gZ3Vlc3NFdmVudENsYXNzKGxpc3RlbmVySW50ZXJmYWNlLmdldE5hbWUoKSk7DQorIA0KKyAJ CS8vMS4gdHJ5IGhhbmRsZXIgd2l0aCBldmVudCBvYmplY3QgcGFyYW1ldGVyDQorIAkJQ2xhc3Nb XSBwYXJhbVR5cGVzID0gbmV3IENsYXNzW10geyBldmVudENsYXNzIH07DQorIAkJX2hhbmRsZXIg PSBnZXRNZXRob2QoY2xpZW50LmdldENsYXNzKCksIGhhbmRsZXIsIHBhcmFtVHlwZXMpOw0KKyAJ CQ0KKyAJCWlmIChfaGFuZGxlciA9PSBudWxsKSB7DQorIAkJCS8vMi4gaGFuZGxlciB3aXRoIGV2 ZW50IG9iamVjdCBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZC4NCisgCQkJLy8gICB0cnkgaGFuZGxl ciB3aXRob3V0IHBhcmFtZXRlcnMNCisgCQkJX2hhbmRsZXIgPSBnZXRNZXRob2QoY2xpZW50Lmdl dENsYXNzKCksIGhhbmRsZXIsIG51bGwpOw0KKyAJCX0NCisgCQkNCisgCQlpZiAoX2hhbmRsZXIg PT0gbnVsbCkgew0KKyAJCQkvLyBoYW5kbGVyIHdhcyBub3QgZm91bmQNCisgCQkJdGhyb3cgbmV3 IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24oIkNhbiBub3QgZmluZCBoYW5kbGVyIGZvciAiICsgbGlz dGVuZXJNZXRob2ROYW1lICsgIjogIiArDQorIAkJCQkJY2xpZW50LmdldENsYXNzKCkuZ2V0TmFt ZSgpICsgIi4iICsgaGFuZGxlcik7DQorIAkJfQ0KKyAJfQ0KKyAJDQorIAkvKioNCisgCSAqIENy ZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyA8Y29kZT5saXN0ZW5lckludGVyZmFjZTwv Y29kZT4NCisgCSAqIGluIHdoaWNoIHRoZSBpbXBsZW1lbnRhdGlvbmkgb2YgbWV0aG9kIG5hbWVk IDxjb2RlPmxpc3RlbmVyTWV0aG9kTmFtZTwvY29kZT4gY2FsbHMgbWV0aG9kIG5hbWVkIDxjb2Rl PmhhbmRsZXI8L2NvZGU+IG9mIHRoZSA8Y29kZT5jbGllbnQ8L2NvZGU+IG9iamVjdC4NCisgCSAq IDxjb2RlPmhhbmRsZXI8L2NvZGU+IG1ldGhvZCBtYXkgYWNjZXB0IGV2ZW50IG9iamVjdCB0aGF0 IGNvcnJlc3BvbmRzIHRvIDxjb2RlPmxpc3RlbmVySW50ZXJmYWNlPC9jb2RlPiBhcyBhIHBhcmFt ZXRlci4gaWYgPGNvZGU+Y2xpZW50PC9jb2RlPiBvYmplY3QncyBjbGFzcw0KKyAJICogZGVmaW5l cyB0d28gbWV0aG9kcyBuYW1lZCA8Y29kZT5oYW5kbGVyPC9jb2RlPiB3aXRoIGFuZCB3aXRob3V0 IGV2ZW50IG9iamVjdCBwYXJhbWV0ZXIsIHRoZW4gdGhlIG9uZSA8aT53aXRoPC9pPiBwYXJhbWV0 ZXIgaGFzIGEgcHJlY2VkZW5jZS4NCisgCSAqIElmIHRoZSA8Y29kZT5saXN0ZW5lck1ldGhvZE5h bWU8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+IGFsbCBtZXRob2RzIGluIHRoZSBpbnRlcmZh Y2UgdHJpZ2dlciB0aGUgPGNvZGU+aGFuZGxlcjwvY29kZT4gbWV0aG9kIA0KKyAJICogdG8gYmUg ZXhlY3V0ZWQgb24gdGhlIDxjb2RlPmNsaWVudDwvY29kZT4gb2JqZWN0Lg0KKyAJICogPHA+DQor IAkgKiBTaW1wbGUgZXhhbXBsZSBvZiB1c2Ugd291bGQgYmU6DQorIAkgKiA8cHJlPg0KKyAJICog CWNsYXNzIE15RnJhbWUgew0KKyAJICogCS4uLg0KKyAJICogCQlsaXN0LmFkZExpc3RTZWxlY3Rp b25MaXN0ZW5lcigNCisgCSAqIAkJCQkoTGlzdFNlbGVjdGlvbkxpc3RlbmVyKSBFdmVudEhhbmRs ZXIuY3JlYXRlKExpc3RTZWxlY3Rpb25MaXN0ZW5lci5jbGFzcywgbnVsbCwgdGhpcywgImhhbmRs ZVZhbHVlQ2hhbmdlZCIpKTsNCisgCSAqIAkuLi4NCisgCSAqIAkJdm9pZCBoYW5kbGVWYWx1ZUNo YW5nZWQoKSB7IC4uLiB9DQorIAkgKiAJfQ0KKyAJICogPC9wcmU+DQorIAkgKiBDb2RlIG9iYXZl IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyB0cmFkaXRpb25hbCBjb2RlIHVzaW5nIGFu b255bW91cyBjbGFzcy4NCisgCSAqIDxwcmU+DQorIAkgKiAJY2xhc3MgTXlGcmFtZSB7DQorIAkg KiAJLi4uDQorIAkgKiAJCWxpc3QuYWRkTGlzdFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBMaXN0U2Vs ZWN0aW9uTGlzdGVuZXIoKSB7DQorIAkgKiAJCQlwdWJsaWMgdm9pZCB2YWx1ZUNoYW5nZWQoTGlz dFNlbGVjdGlvbkV2ZW50IGUpIHsNCisgCSAqIAkJCQloYW5kbGVWYWx1ZUNoYW5nZWQoKTsNCisg CSAqIAkJCX0NCisgCSAqIAkJfSk7DQorIAkgKiAJLi4uDQorIAkgKiAJCXZvaWQgaGFuZGxlVmFs dWVDaGFuZ2VkKCkgeyAuLi4gfQ0KKyAJICogCX0NCisgCSAqIDwvcHJlPg0KKyAJICogDQorIAkg KiBAcGFyYW0gbGlzdGVuZXJJbnRlcmZhY2UgdGhlIGxpc3RlbmVyIGludGVyZmFjZSB0byBjcmVh dGUgYSBwcm94eSBmb3INCisgCSAqIEBwYXJhbSBsaXN0ZW5lck1ldGhvZE5hbWUgdGhlIG5hbWUg b2YgdGhlIG1ldGhvZCBpbiB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlIHRoYXQgc2hvdWxkIHRyaWdn ZXIgdGhlIGhhbmRsZXINCisgCSAqIEBwYXJhbSBjbGllbnQgdGhlIG9iamVjdCB0aGF0IGltcGxl bWVudHMgaGFuZGxlciBtZXRob2QNCisgCSAqIEBwYXJhbSBoYW5kbGVyIG5hbWUgb2YgdGhlIGNs aWVudCBvYmplY3QncyBtZXRob2QgdGhhdCBtdXN0IGJlIGNhbGxlZCBvbiBldmVudA0KKyAJICog IA0KKyAgCSAqIEB0aHJvd3MgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBpZiBoYW5kbGVyIG1ldGhv ZCBpcyBub3QgZm91bmQgaW4gY2xpZW50IG9iamVjdCdzIGNsYXNzLg0KKyAJICovDQorIAlzdGF0 aWMgcHVibGljIE9iamVjdCBjcmVhdGUoQ2xhc3MgbGlzdGVuZXJJbnRlcmZhY2UsIFN0cmluZyBs aXN0ZW5lck1ldGhvZE5hbWUsIE9iamVjdCBjbGllbnQsIFN0cmluZyBoYW5kbGVyKSB7DQorIAkJ cmV0dXJuIFByb3h5Lm5ld1Byb3h5SW5zdGFuY2UoDQorIAkJCQljbGllbnQuZ2V0Q2xhc3MoKS5n ZXRDbGFzc0xvYWRlcigpLCANCisgCQkJCW5ldyBDbGFzc1tdIHsgbGlzdGVuZXJJbnRlcmZhY2Ug fSwgDQorIAkJCQluZXcgRXZlbnRIYW5kbGVyKGxpc3RlbmVySW50ZXJmYWNlLCBsaXN0ZW5lck1l dGhvZE5hbWUsIGNsaWVudCwgaGFuZGxlcikpOw0KKyAJfQ0KKyAJDQorIAkvKioNCisgCSAqIEhl bHBlciBtZXRob2QuIERpc2NvdmVycyBhcHByb3ByaWF0ZSA8Y29kZT5hZGRYeHhMaXN0ZW5lcjwv Y29kZT4gbWV0aG9kIGJhc2VkIG9uIDxjb2RlPmxpc3RlbmVyTWV0aG9kTmFtZTwvY29kZT4gZHlu YW1pY2FsbHkuIA0KKyAJICogRmFydGhlciByZWR1Y2VzIGFtb3VudCBvZiBjb2RpbmcgY29tcGFy ZWQgd2l0aCA8Y29kZT5jcmVhdGU8L2NvZGU+IG1ldGhvZC4gDQorIAkgKiBBbHNvIHRoaXMgbWV0 aG9kIGlzIGRlZGljYXRlZCB0byBiZSB1c2VkIGJ5IHN3aXhtbCBQYXJzZXIuDQorIAkgKiBTbyB0 aGUgZXhhbXBsZSBmcm9tIDxjb2RlPmNyZWF0ZTwvY29kZT4gbWV0aG9kIGNhbiBiZSByZXdyaXRl biBsaWtlIHRoaXM6DQorIAkgKiA8cHJlPg0KKyAJICogRXZlbnRIYW5kbGVyLmFkZExpc3RlbmVy KGxpc3QsICJ2YWx1ZUNoYW5nZWQiLCB0aGlzLCAiaGFuZGxlVmFsdWVDaGFuZ2VkIik7DQorIAkg KiA8L3ByZT4NCisgCSAqIE9yIGluIHN3aXhtbCBkZXNjcmlwdG9yIGl0IHdvdWxkIGxvb2sgbGlr ZToNCisgCSAqIDxwcmU+DQorIAkgKiAmbHQ7bGlzdCBpZD0ibGlzdCIgdmFsdWVDaGFuZ2VkPSJo YW5kbGVWYWx1ZUNoYW5nZWQiLyZndDsNCisgCSAqIDwvcHJlPg0KKyAJICogSW4gdGhpcyBjYXNl IGNsaWVudCBvYmplY3QgaXMgdGhlIG9uZSB3aGljaCBpcyBwYXNzZWQgdG8gU3dpbmdFbmdpbmUn cyBjb25zdHJ1Y3Rvci4NCisgCSAqIA0KKyAJICogQHBhcmFtIGNvbXBvbmVudCBndWkgY29tcG9u ZW50IHRvIGFkZCBsaXN0ZW5lciB0bw0KKyAJICogQHBhcmFtIGxpc3RlbmVyTWV0aG9kTmFtZSB0 aGUgbmFtZSBvZiB0aGUgbWV0aG9kIGluIHRoZSBsaXN0ZW5lciBpbnRlcmZhY2UgdGhhdCBzaG91 bGQgdHJpZ2dlciB0aGUgaGFuZGxlcg0KKyAJICogQHBhcmFtIGNsaWVudCB0aGUgb2JqZWN0IHRo YXQgaW1wbGVtZW50cyBoYW5kbGVyIG1ldGhvZA0KKyAJICogQHBhcmFtIGhhbmRsZXIgbmFtZSBv ZiB0aGUgY2xpZW50IG9iamVjdCdzIG1ldGhvZCB0aGF0IG11c3QgYmUgY2FsbGVkIG9uIGV2ZW50 DQorIAkgKiANCisgCSAqIEBzZWUgI2NyZWF0ZQ0KKyAJICovDQorIAlwdWJsaWMgc3RhdGljIHZv aWQgYWRkTGlzdGVuZXIoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGxpc3RlbmVyTWV0aG9kTmFt ZSwgT2JqZWN0IGNsaWVudCwgU3RyaW5nIGhhbmRsZXIpIHsNCisgCQkvL2ZpbmQgYXBwcm9wcmlh dGUgYWRkWHh4TGlzdGVuZXIgbWV0aG9kDQorIAkJTWV0aG9kIGFkZE1ldGhvZCA9IGd1ZXNzQWRk TWV0aG9kKGNvbXBvbmVudC5nZXRDbGFzcygpLCBsaXN0ZW5lck1ldGhvZE5hbWUpOw0KKyAJCWlm IChhZGRNZXRob2QgPT0gbnVsbCkgew0KKyAJCQl0aHJvdyBuZXcgTm9TdWNoRWxlbWVudEV4Y2Vw dGlvbigiQ2Fubm90IGFkZCBsaXN0ZW5lciBmb3I6IiArIGxpc3RlbmVyTWV0aG9kTmFtZSk7DQor IAkJfQ0KKyAJCQ0KKyAJCS8vIGNyZWF0ZSBldmVudCBoYW5kbGVyDQorIAkJQ2xhc3MgbGlzdGVu ZXJJbnRlcmZhY2UgPSBhZGRNZXRob2QuZ2V0UGFyYW1ldGVyVHlwZXMoKVswXTsNCisgCQlPYmpl Y3QgZXZlbnRIYW5kbGVyID0gRXZlbnRIYW5kbGVyLmNyZWF0ZShsaXN0ZW5lckludGVyZmFjZSwg bGlzdGVuZXJNZXRob2ROYW1lLCBjbGllbnQsIGhhbmRsZXIpOw0KKyAJCQ0KKyAJCS8vIGFkZCBs aXN0ZW5lciB0byB0aGUgZ3VpIGNvbXBvbmVudA0KKyAJCXRyeSB7DQorIAkJCWFkZE1ldGhvZC5p bnZva2UoY29tcG9uZW50LCBuZXcgT2JqZWN0W10geyBldmVudEhhbmRsZXIgfSk7DQorIAkJfQ0K KyAJCWNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAJCQkvL3Nob3VsZCBub3QgaGFwcGVuDQorIAkJ CXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJFcnJvciBhZGRpbmcgbGlzdGVuZXIuIHJlYXNv bjogIiArIGUpOw0KKyAJCX0NCisgCX0JDQorIA0KKyAJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8NCisgCS8vIEludm9jYXRpb25IYW5kbGVyIGltcGxlbWVudGF0aW9uDQorIAkN CisgCXB1YmxpYyBPYmplY3QgaW52b2tlKE9iamVjdCBwcm94eSwgTWV0aG9kIG1ldGhvZCwgT2Jq ZWN0W10gYXJncykgdGhyb3dzIFRocm93YWJsZSB7DQorIAkJDQorICAgICAgICAgU3RyaW5nIG1l dGhvZE5hbWUgPSBtZXRob2QuZ2V0TmFtZSgpOw0KKyANCisgICAgICAgICAvLyBIYW5kbGUgdGhl IE9iamVjdCBwdWJsaWMgbWV0aG9kcy4NCisgICAgICAgICBpZiAobWV0aG9kLmdldERlY2xhcmlu Z0NsYXNzKCkgPT0gT2JqZWN0LmNsYXNzKSB7DQorICAgICAgICAgICAgIGlmIChtZXRob2ROYW1l LmVxdWFscygiaGFzaENvZGUiKSkgew0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnRl Z2VyKFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHByb3h5KSk7DQorICAgICAgICAgICAgIH0gZWxz ZSBpZiAobWV0aG9kTmFtZS5lcXVhbHMoImVxdWFscyIpKSB7DQorICAgICAgICAgICAgICAgICBy ZXR1cm4gQm9vbGVhbi52YWx1ZU9mKHByb3h5ID09IGFyZ3NbMF0pOw0KKyAgICAgICAgICAgICB9 IGVsc2UgaWYgKG1ldGhvZE5hbWUuZXF1YWxzKCJ0b1N0cmluZyIpKSB7DQorICAgICAgICAgICAg ICAgICByZXR1cm4gcHJveHkuZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKyAnQCcNCisgICAgICAgICAg ICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHByb3h5Lmhhc2hDb2RlKCkpOw0K KyAgICAgICAgICAgICB9DQorICAgICAgICAgfQ0KKyAJCQ0KKyAJCS8vIEZpbHRlciBvdXQgbGlz dGVuZXIncyBtZXRob2RzIHdlJ3JlIG5vdCBpbnRlcmVzdGVkIGluDQorIAkJaWYgKF9saXN0ZW5l ck1ldGhvZE5hbWUgIT0gbnVsbCAmJiAhX2xpc3RlbmVyTWV0aG9kTmFtZS5lcXVhbHMobWV0aG9k TmFtZSkpIHsNCisgCQkJcmV0dXJuIG51bGw7DQorIAkJfQ0KKyAJCQ0KKyAJCS8vIENhbGwgaGFu ZGxlciBtZXRob2Qgb2YgdGhlIGNsaWVudC4NCisgCQl0cnkgew0KKyAJCQlPYmplY3RbXSBwYXJh bXMgPSBudWxsOw0KKyAJCQlpZiAoX2hhbmRsZXIuZ2V0UGFyYW1ldGVyVHlwZXMoKS5sZW5ndGgg PT0gMSkgew0KKyAJCQkJcGFyYW1zID0gYXJnczsNCisgCQkJfQ0KKyAJCQkNCisgCQkJT2JqZWN0 IHJlc3VsdCA9IG51bGw7DQorIAkJCWlmICghX2hhbmRsZXIuaXNBY2Nlc3NpYmxlKCkpIHsgLy8g aGFuZGxlcnMgbWF5IGJlIHByaXZhdGUgbWV0aG9kcyBhcyB3ZWxsDQorIAkJCQlfaGFuZGxlci5z ZXRBY2Nlc3NpYmxlKHRydWUpOw0KKyAJCQkJcmVzdWx0ID0gX2hhbmRsZXIuaW52b2tlKF9jbGll bnQsIHBhcmFtcyk7DQorIAkJCQlfaGFuZGxlci5zZXRBY2Nlc3NpYmxlKGZhbHNlKTsvL3Jlc3Rv cmUgYWNjZXNzaWJpbGl0eQ0KKyAJCQl9DQorIAkJCWVsc2Ugew0KKyAJCQkJcmVzdWx0ID0gX2hh bmRsZXIuaW52b2tlKF9jbGllbnQsIHBhcmFtcyk7DQorIAkJCX0NCisgCQkJcmV0dXJuIHJlc3Vs dDsNCisgCQkJDQorIAkJfQ0KKyAJCWNhdGNoIChJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIHgp IHsNCisgCQkJdGhyb3cgeC5nZXRUYXJnZXRFeGNlcHRpb24oKTsNCisgCQl9DQorIAkJY2F0Y2gg KElsbGVnYWxBY2Nlc3NFeGNlcHRpb24geCkgew0KKyAJCQl0aHJvdyB4Ow0KKyAJCX0NCisgCX0N CisgCQ0KKyAJLy8vLy8vLy8vLw0KKyAJLy8gcHJpdmF0ZQ0KKyAJDQorIAkvKioNCisgCSAqIFNl YXJjaHMgZm9yIGEgbWV0aG9kIGluIGluaGVyaXRhbmNlIGhpZXJhcmNoeSBmcm9tIDxjb2RlPmNs YXp6PC9jb2RlPiBkb3duIHRvIDxjb2RlPk9iamVjdC5jbGFzczwvY29kZT4uDQorIAkgKiBSZXR1 cm5lZCBtZXRob2QgaXMgbm90IG5lY2Vzc2FyaWx5IHB1YmxpYy4gQ2FuIGhhdmUgYW55IHZpc2li aWxpdHkuIA0KKyAJICovDQorIAlwcml2YXRlIE1ldGhvZCBnZXRNZXRob2QoQ2xhc3MgY2xhenos IFN0cmluZyBuYW1lLCBDbGFzc1tdIHBhcmFtcykgew0KKyAJCU1ldGhvZCBtZXRob2QgPSBudWxs Ow0KKyAJCXdoaWxlIChjbGF6eiAhPSBudWxsICYmIG1ldGhvZCA9PSBudWxsKSB7DQorIAkJCXRy eSB7DQorIAkJCQltZXRob2QgPSBjbGF6ei5nZXREZWNsYXJlZE1ldGhvZChuYW1lLCBwYXJhbXMp Ow0KKyAJCQl9DQorIAkJCWNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZSkgew0KKyAJCQkJ Ly9tZXRob2QgaXMgbm90IGZvdW5kIGluIHRoZSBjbGFzcyBpdHNlbGYuDQorIAkJCSAgICAvL2Nv bnRpbnVlIHJlY3Vyc2l2ZWx5IHRvIHRoZSBzdXBlciBjbGFzcy4NCisgCQkJCWNsYXp6ID0gY2xh enouZ2V0U3VwZXJjbGFzcygpOw0KKyAJCQl9DQorIAkJfQ0KKyAJCXJldHVybiBtZXRob2Q7DQor IAl9DQorIAkNCisgCS8qKg0KKyAJICogQ2hlY2tzIGlmIGdpdmVuIGNsYXNzIGhhcyA8Y29kZT5h ZGRYeHhMaXN0ZW5lcjwvY29kZT4gbWV0aG9kIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuDQor IAkgKiA8Y29kZT5saXN0ZW5lck1ldGhvZE5hbWU8L2NvZGU+LiBJZiBzbyByZXR1cm5zIHRoZSBt ZXRob2QsIDxjb2RlPm51bGw8L2NvZGU+IG90aGVyd2lzZS4gDQorIAkgKiBGb3IgZXhhbXBsZSBp ZiA8Y29kZT5saXN0ZW5lck1ldGhvZE5hbWU8L2NvZGU+IGlzDQorIAkgKiAia2V5UHJlc3NlZCIs IGNoZWNrcyB3aGV0aGVyIGdpdmVuIGNsYXNzIGhhcyA8Y29kZT5hZGRLZXlMaXN0ZW5lcjwvY29k ZT4gbWV0aG9kLg0KKyAJICogQHBhcmFtIGNsYXp6IGNsYXNzIHRvIGJlIGNoZWNrZWQgDQorIAkg KiBAcGFyYW0gbGlzdGVuZXJNZXRob2ROYW1lIG5hbWUgb2YgdGhlIGxpc3RlbmVyIG1ldGhvZC4g Zm9yIGV4YW1wbGUgImtleVByZXNzZWQiLg0KKyAJICovDQorIAlwcml2YXRlIHN0YXRpYyBNZXRo b2QgZ3Vlc3NBZGRNZXRob2QoQ2xhc3MgY2xhenosIFN0cmluZyBsaXN0ZW5lck1ldGhvZE5hbWUp IHsNCisgCQlNZXRob2RbXSBtZXRob2RzID0gY2xhenouZ2V0TWV0aG9kcygpOw0KKyAJCWZvciAo aW50IGkgPSAwOyBpIDwgbWV0aG9kcy5sZW5ndGg7IGkrKykgew0KKyAJCQlNZXRob2QgYWRkTWV0 aG9kID0gbWV0aG9kc1tpXTsNCisgCQkJDQorIAkJCS8vMS4gbWV0aG9kIHNob3VsZCBzdGFydCB3 aXRoICJhZGQiDQorIAkJCWlmICghYWRkTWV0aG9kLmdldE5hbWUoKS5zdGFydHNXaXRoKCJhZGQi KSkgew0KKyAJCQkJY29udGludWU7DQorIAkJCX0NCisgCQkJDQorIAkJCUNsYXNzW10gcGFyYW1U eXBlcyA9IGFkZE1ldGhvZC5nZXRQYXJhbWV0ZXJUeXBlcygpOw0KKyANCisgCQkJLy8yLiBtZXRo b2Qgc2hvdWxkIGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVyDQorIAkJCWlmIChwYXJhbVR5cGVz Lmxlbmd0aCAhPSAxKSB7DQorIAkJCQljb250aW51ZTsNCisgCQkJfQ0KKyAJCQkNCisgCQkJLy8z LiBwYXJhbWV0ZXIgdHlwZSBtdXN0IGJlIGluc3RhbmNlIG9mIEV2ZW50TGlzdGVuZXINCisgCQkJ Q2xhc3MgcGFyYW1UeXBlID0gcGFyYW1UeXBlc1swXTsNCisgCQkJaWYgKCFFdmVudExpc3RlbmVy LmNsYXNzLmlzQXNzaWduYWJsZUZyb20ocGFyYW1UeXBlc1swXSkpIHsNCisgCQkJCWNvbnRpbnVl Ow0KKyAJCQl9DQorIAkJCQ0KKyAJCQkvLzQuIGFuZCBpdCBtdXN0IGhhdmUgbWV0aG9kIHdpdGgg bmFtZSAibGlzdGVuZXJNZXRob2ROYW1lIg0KKyAJCQlDbGFzcyBldmVudENsYXNzID0gZ3Vlc3NF dmVudENsYXNzKHBhcmFtVHlwZXNbMF0uZ2V0TmFtZSgpKTsNCisgCQkJdHJ5IHsNCisgCQkJCU1l dGhvZCBsaXN0ZW5lck1ldGhvZCA9IHBhcmFtVHlwZXNbMF0uZ2V0TWV0aG9kKGxpc3RlbmVyTWV0 aG9kTmFtZSwgbmV3IENsYXNzW117ZXZlbnRDbGFzc30pOw0KKyAJCQkJLy8gaXQgcGFzc2VkIGFs bCB0ZXN0cy4gdGhhdCdzIHdoYXQgd2UgbmVlZA0KKyAJCQkJcmV0dXJuIGFkZE1ldGhvZDsNCisg CQkJfQ0KKyAJCQljYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGUpIHsNCisgCQkJCWNvbnRp bnVlOw0KKyAJCQl9DQorIAkJfQ0KKyAJCXJldHVybiBudWxsOw0KKyAJfQ0KKyAJDQorIAkvKioN CisgCSAqIEBwYXJhbSBsaXN0ZW5lckludGVyZmFjZU5hbWUgbmFtZSBvZiB0aGUgbGlzdGVuZXIg aW50ZXJmYWNlDQorIAkgKiBAcmV0dXJuIGV2ZW50IGNsYXNzIHRoYXQgY29ycmVzcG9uZHMgdG8g dGhlIGdpdmVuIDxjb2RlPmxpc3RlbmVySW50ZXJmYWNlTmFtZTwvY29kZT4uDQorIAkgKiAJCTxj b2RlPm51bGw8L2NvZGU+IGlmIGNvcnJlc3BvbmRpbmcgY2xhc3MgY2FuIG5vdCBiZSBmb3VuZC4g Rm9yIGV4YW1wbGUNCisgCSAqIAkJaWYgbGlzdGVuZXJJbnRlcmZhY2VOYW1lIGlzICJLZXlMaXN0 ZW5lciIgcmV0dXJucyA8Y29kZT5LZXlFdmVudDwvY29kZT4gY2xhc3MuDQorIAkgKi8NCisgCXBy aXZhdGUgc3RhdGljIENsYXNzIGd1ZXNzRXZlbnRDbGFzcyhTdHJpbmcgbGlzdGVuZXJJbnRlcmZh Y2VOYW1lKSB7DQorIAkJLy8gbGlzdGVuZXIgaW50ZXJmYWNlIGFuZCBldmVudCBjbGFzcw0KKyAJ CS8vIG5hbWVzIG11c3QgY29tcGx5IHdpdGggamF2YSBiZWFuIGNvbnZlbnRpb25zLg0KKyAJCWlm ICghbGlzdGVuZXJJbnRlcmZhY2VOYW1lLmVuZHNXaXRoKCJMaXN0ZW5lciIpKSB7DQorIAkJCXJl dHVybiBudWxsOw0KKyAJCX0NCisgDQorIAkJLy8gY2FsY3VsYXRlIGV2ZW50IGNsYXNzIG5hbWUN CisgCQlTdHJpbmcgZXZlbnRDbGFzc05hbWUgPSBudWxsOw0KKyAJCWlmIChsaXN0ZW5lckludGVy ZmFjZU5hbWUuZXF1YWxzKE1vdXNlTW90aW9uTGlzdGVuZXIuY2xhc3MuZ2V0TmFtZSgpKSkgeyAv LyBNb3VzZU1vdGlvbkxpc3RlbmVyIGlzIGEgc3BlY2lhbCBjYXNlDQorIAkJCWV2ZW50Q2xhc3NO YW1lID0gTW91c2VFdmVudC5jbGFzcy5nZXROYW1lKCk7DQorIAkJfSANCisgCQllbHNlIHsgLy8g Zm9yIGFsbCBvdGhlciBsaXN0ZW5lcnMNCisgCQkJU3RyaW5nIGJhc2VOYW1lID0gbGlzdGVuZXJJ bnRlcmZhY2VOYW1lLnN1YnN0cmluZygwLCBsaXN0ZW5lckludGVyZmFjZU5hbWUubGVuZ3RoKCkg LSAiTGlzdGVuZXIiLmxlbmd0aCgpKTsNCisgCQkJZXZlbnRDbGFzc05hbWUgPSBiYXNlTmFtZSAr ICJFdmVudCI7DQorIAkJfQ0KKyANCisgCQkvLyB0cnkgdG8gZ2V0IGV2ZW50IGNsYXNzDQorIAkJ dHJ5IHsNCisgCQkJQ2xhc3MgZXZlbnRDbGFzcyA9IENsYXNzLmZvck5hbWUoZXZlbnRDbGFzc05h bWUpOw0KKyAJCQlyZXR1cm4gZXZlbnRDbGFzczsNCisgCQl9DQorIAkJY2F0Y2ggKENsYXNzTm90 Rm91bmRFeGNlcHRpb24gZSkgew0KKyAJCQkvLyBldmVudCBjbGFzcyB3YXMgbm90IGZvdW5kDQor IAkJCS8vIHBlcmhhcHMgbmFtaW5nIGRvZXMgbm90IGNvbXBseSB3aXRoDQorIAkJCS8vIGphdmEg YmVhbnMgY29udmVudGlvbnMuDQorIAkJCXJldHVybiBudWxsOw0KKyAJCX0NCisgCX0NCisgfQ0K ZGlmZiAtTkViYyAtSSAnJElkJyAtSSAnJFJldmlzaW9uJyBzd2l4bWxfMTQ0L3NyYy9vcmcvc3dp eG1sL1BhcnNlci5qYXZhIHN3aXhtbF9leHQvc3JjL29yZy9zd2l4bWwvUGFyc2VyLmphdmENCioq KioqKioqKioqKioqKg0KKioqIDc0Niw3NTIgKioqKg0KICAgICAgICAgIC8vDQogICAgICAgICAg bGlzdC5hZGQoYXR0cik7DQogICAgICAgICAgY29udGludWU7DQohICAgICAgIH0gZWxzZSB7DQog ICAgICAgICAgLy8NCiAgICAgICAgICAvLyAgU2VhcmNoIGZvciBhIHB1YmxpYyBmaWVsZCBpbiB0 aGUgb2JqLmNsYXNzIHRoYXQgbWF0Y2hlcyB0aGUgYXR0cmlidXRlIG5hbWUNCiAgICAgICAgICAv Lw0KLS0tIDczMSw3NDQgLS0tLQ0KICAgICAgICAgIC8vDQogICAgICAgICAgbGlzdC5hZGQoYXR0 cik7DQogICAgICAgICAgY29udGludWU7DQohICAgICAgIH0gDQohIAkJZWxzZSBpZiAoIHRyeUxp c3RlbmVyKG9iaiwgYXR0cikgKSANCiEgCQl7CS8vDQohIAkJCS8vIFNlYXJjaCBmb3IgYSBhZGRY eHhMaXN0ZW5lciBtZXRob2QNCiEgCQkJLy8NCiEgCQkJY29udGludWU7DQohIAkJfQ0KISAgICAg ICBlbHNlIHsNCiAgICAgICAgICAvLw0KICAgICAgICAgIC8vICBTZWFyY2ggZm9yIGEgcHVibGlj IGZpZWxkIGluIHRoZSBvYmouY2xhc3MgdGhhdCBtYXRjaGVzIHRoZSBhdHRyaWJ1dGUgbmFtZQ0K ICAgICAgICAgIC8vDQoqKioqKioqKioqKioqKioNCioqKiA3NzcsNzgyICoqKioNCi0tLSA3Njks NzgyIC0tLS0NCiAgICAgIHJldHVybiBsaXN0Ow0KICAgIH0NCiAgDQorIAlwcml2YXRlIGJvb2xl YW4gdHJ5TGlzdGVuZXIoIE9iamVjdCBvYmosIEF0dHJpYnV0ZSBhdHRyICkgew0KKyAJCXRyeSB7 DQorIAkJCUV2ZW50SGFuZGxlci5hZGRMaXN0ZW5lcihvYmosIGF0dHIuZ2V0TmFtZSgpLCBlbmdp bmUuZ2V0Q2xpZW50KCksIGF0dHIuZ2V0VmFsdWUoKSk7DQorIAkJfSBjYXRjaCAoTm9TdWNoRWxl bWVudEV4Y2VwdGlvbiB4KSB7DQorIAkJCXJldHVybiBmYWxzZTsNCisgCQl9DQorIAkJcmV0dXJu IHRydWU7DQorIAl9DQogIA0KICAgIC8qKg0KICAgICAqIENvcGllcyBhdHRyaWJ1dGVzIHRoYXQg ZWxlbWVudCBkb2Vzbid0IGhhdmUgeWV0IGZvcm0gZWxlbWVudFtpZF0NCg== ------=_Part_2333_17650554.1124810159268 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Forum mailing list [email protected] http://carlsbadcubes.com/mailman/listinfo/forum_carlsbadcubes.com ------=_Part_2333_17650554.1124810159268--