/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 7 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġgit 4 idea . revert Ċ Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Task Ċ import Ġcom . intellij . openapi . project . D umb Aware Action Ċ import Ġcom . intellij . openapi . util . text . StringUtil . plural ize Ċ import Ġcom . intellij . util . containers . Container Util Ċ import Ġcom . intellij . vcs . log . V cs Log Data Keys Ċ import Ġcom . intellij . vcs . log . util . V cs Log Util . MAX _ SELECTED _ COMM ITS Ċ import Ġgit 4 idea . Git Util . getRepository Manager Ċ import Ġgit 4 idea . config . Git V cs Settings Ċ Ċ class ĠGit Re vert Action Ġ: ĠD umb Aware Action () Ġ{ ĊĠ Ġoverride Ġfun Ġupdate ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġsuper . update ( e ) ĊĊĠĠĠ Ġval Ġproject Ġ= Ġe . project ĊĠĠĠ Ġval Ġlog Ġ= Ġe . getData ( V cs Log Data Keys . V CS _ LOG ) ĊĠĠĠ Ġif Ġ( project Ġ== Ġnull Ġ|| Ġlog Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġe . presentation . isEnabled And Visible Ġ= Ġfalse ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġrepository Manager Ġ= Ġget Repository Manager ( project ) ĊĊĠĠĠ Ġval Ġcommits Ġ= ĠContainer Util . getFirst Items ( log . selected Short Details , ĠMAX _ SELECTED _ COMM ITS ) ĊĠĠĠ Ġ// Ġcommits Ġfrom Ġmixed Ġroots ĊĠĠĠ Ġif Ġ( commits . any Ġ{ Ġrepository Manager . getRepository For Root Quick ( it . root ) Ġ== Ġnull Ġ}) Ġ{ ĊĠĠĠĠĠ Ġe . presentation . isEnabled And Visible Ġ= Ġfalse ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġre verting Ġmerge Ġcommit Ġis Ġnot Ġallowed ĊĠĠĠ Ġif Ġ( commits . any Ġ{ Ġit . parents . size Ġ> Ġ 1 Ġ}) Ġ{ ĊĠĠĠĠĠ Ġe . presentation . isVisible Ġ= Ġtrue ĊĠĠĠĠĠ Ġe . presentation . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠ Ġe . presentation . description Ġ= Ġ" Re verting Ġmerge Ġcommits Ġis Ġnot Ġallowed " ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġe . presentation . isEnabled And Visible Ġ= Ġtrue ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġval Ġproject Ġ= Ġe . project !! ĊĠĠĠ Ġval Ġlog Ġ= Ġe . get Required Data ( V cs Log Data Keys . V CS _ LOG ) ĊĠĠĠ Ġval Ġrepository Manager Ġ= Ġget Repository Manager ( project ) ĊĊĠĠĠ Ġlog . request Selected Details Ġr sd @ Ġ{ Ġcommits Ġ-> ĊĠĠĠĠĠ Ġif Ġ( commits . any Ġ{ Ġrepository Manager . getRepository For Root Quick ( it . root ) Ġ== Ġnull Ġ}) Ġreturn @ r sd ĊĠĠĠĠĠ Ġif Ġ( commits . any Ġ{ Ġit . parents . size Ġ> Ġ 1 Ġ}) Ġreturn @ r sd ĊĊĠĠĠĠĠ Ġobject Ġ: ĠTask . Background able ( project , Ġ" Re verting Ġ${ plural ize (" commit ", Ġcommits . size )} ") Ġ{ ĊĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( indicator : ĠProgress Indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠ ĠGit Re vert Operation ( project , Ġcommits , ĠGit V cs Settings . getInstance ( project ). is Auto Commit On Re vert ). execute () ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}. queue () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ