LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLnVpLmludGVybmFsLnZpZXc7CgppbXBvcnQgamF2YS51dGlsLkxpc3Q7CgppbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLmNvcmUuSUNvbnRlbnRGaWx0ZXI7CmltcG9ydCBvcmcuZWNsaXBzZS53c3QuaW50ZXJuZXQubW9uaXRvci5jb3JlLklSZXF1ZXN0OwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmludGVybmV0Lm1vbml0b3IudWkuQ29udGVudFZpZXdlcjsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLnVpLmludGVybmFsLnZpZXdlcnMuSGVhZGVyVmlld2VyOwovKioKICogTWFuYWdlciBpbnRlcmZhY2UgZm9yIFRDUC9JUCByZXF1ZXN0IGFuZCByZXNwb25zZSBtZXNzYWdlIHZpZXdlcnMKICovCnB1YmxpYyBpbnRlcmZhY2UgSVZpZXdlck1hbmFnZXIgewoJLyoqCgkgKiBTZXQgd2hldGhlciBvciBub3QgdG8gc2hvdyBIVFRQIGhlYWRlciBkZXRhaWxzCgkgKiBAcGFyYW0gYiBib29sZWFuCgkgKi8KCXB1YmxpYyB2b2lkIHNldERpc3BsYXlIZWFkZXJJbmZvKGJvb2xlYW4gYik7CgkKCS8qKgoJICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBIVFRQIGhlYWRlciBkZXRhaWxzIGlzIHNob3dpbmcKCSAqIEByZXR1cm4gYm9vbGVhbgoJICovCglwdWJsaWMgYm9vbGVhbiBnZXREaXNwbGF5SGVhZGVySW5mbygpOwoJCgkvKioKCSAqIFNob3cgdGhlIFRDUC9JUCByZXF1ZXN0IG1lc3NhZ2UgaW4gYSBwYXJlbnQgQ29tcG9zaXRlCgkgKiBAcGFyYW0gcnIgb3JnLmVjbGlwc2UudGNwaXAubW9uaXRvci5pbnRlcm5hbC5SZXF1ZXN0UmVzcG9uc2UKCSAqIEBwYXJhbSBwYXJlbnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlCgkgKi8KCXB1YmxpYyB2b2lkIHNldFJlcXVlc3QoSVJlcXVlc3QgcnIpOwoJCgkvKioKCSAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIGF2YWlsYWJsZSBUQ1AvSVAgcmVxdWVzdCB2aWV3ZXIgaWRzCgkgKiBAcmV0dXJuIGphdmEubGFuZy5TdHJpbmdbXQoJICovCglwdWJsaWMgTGlzdCBnZXRSZXF1ZXN0Vmlld2VycygpOwoJCgkvKioKCSAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIGF2YWlsYWJsZSBUQ1AvSVAgcmVzcG9uc2Ugdmlld2VyIGlkcwoJICogQHJldHVybiBqYXZhLmxhbmcuU3RyaW5nW10KCSAqLwoJcHVibGljIExpc3QgZ2V0UmVzcG9uc2VWaWV3ZXJzKCk7CgkKCS8qKgoJICogU2V0IHRoZSBUQ1AvSVAgcmVxdWVzdCBtZXNzYWdlIHZpZXdlcgoJICogQHBhcmFtIGlkIGphdmEubGFuZy5TdHJpbmcKCSAqLwoJcHVibGljIHZvaWQgc2V0UmVxdWVzdFZpZXdlcihJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCk7CgkKCS8qKgoJICogU2V0IHRoZSBUQ1AvSVAgcmVzcG9uc2UgbWVzc2FnZSB2aWV3ZXIKCSAqIEBwYXJhbSBpZCBqYXZhLmxhbmcuU3RyaW5nCgkgKi8KCXB1YmxpYyB2b2lkIHNldFJlc3BvbnNlVmlld2VyKElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50KTsKCQoJcHVibGljIHZvaWQgYWRkRmlsdGVyKElDb250ZW50RmlsdGVyIGZpbHRlcik7CgkKCXB1YmxpYyB2b2lkIHJlbW92ZUZpbHRlcihJQ29udGVudEZpbHRlciBmaWx0ZXIpOwoJCgkvKioKCSAqIFJldHVybiB0aGUgY3VycmVudCByZXF1ZXN0IHZpZXdlci4KCSAqIEByZXR1cm4gVGhlIGN1cnJlbnQgcmVxdWVzdCB2aWV3ZXIuCgkgKi8KCXB1YmxpYyBDb250ZW50Vmlld2VyIGdldEN1cnJlbnRSZXF1ZXN0Vmlld2VyKCk7CgkKCS8qKgoJICogUmV0dXJuIHRoZSBjdXJyZW50IHJlcXVlc3QgaGVhZGVyIHZpZXdlci4KCSAqIEByZXR1cm4gVGhlIGN1cnJlbnQgcmVxdWVzdCBoZWFkZXIgdmlld2VyLgoJICovCglwdWJsaWMgSGVhZGVyVmlld2VyIGdldEN1cnJlbnRSZXF1ZXN0SGVhZGVyVmlld2VyKCk7Cn0=