{"push_id":1462922007,"size":18,"distinct_size":1,"ref":"refs/heads/192-appveyor","head":"b3d0b61e9f8cc3a0c1afe545f1fdd8012fbc7a1e","before":"b6c6cd54a96932c27d7b6b018e4a6e5ed4441413","commits":[{"sha":"4b99eb594378e44bae3dcf454c2b94cd2215d183","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":"[183] UiParts should not store a reference to the primaryStage\n\n* UiPart: move setIcon() into MainWindow\r\n\r\nUiPart::setIcon() is only used by MainWindow. Furthermore, UiParts\r\nshould not be allowed to change the primary stage's icon at their whim\r\nand fancy, as it may lead to multiple UiParts conflicting with each\r\nother because they all want to set the primary stage's icons.\r\n\r\nSo, make it clear that only MainWindow is allowed to do this by moving\r\nUiPart::setIcon() into MainWindow, and making it private.\r\n\r\n* UiPart: move setIcon() into FxViewUtil\r\n\r\nUiPart::setIcon() does not depend on any internal data of UiPart, and\r\nthus is better suited to be in an external utility class as a static\r\nmethod. This is done to make it clear that calling setIcon() will not\r\nmodify the state of any objects, besides the Stage passed in as an\r\nargument.\r\n\r\n* FxViewUtil: rename setIcon() to setStageIcon()\r\n\r\nThis is done to make it clear that the method operates on a Stage.\r\n\r\n* UiPart: push down primaryStage\r\n\r\nCurrently, all UiParts store a reference to their primaryStage, which\r\nmeans that they can modify the primaryStage at their own whim and fancy.\r\n\r\nWe want to prevent that -- UiParts should not be able to access the\r\nprimaryStage as it makes it hard to reason about which UiPart is\r\ncontrolling the primaryStage and which is not. As such, we want to\r\nremove the reference to the primaryStage from all UiParts.\r\n\r\nOf all the UiParts, we note that only MainWindow requires a reference to\r\nthe primaryStage. All other UiParts do not, and SHOULD NOT, keep a\r\nreference to the primaryStage.\r\n\r\nSo, we push down the `primaryStage` field from UiPart to MainWindow\r\nonly. All other UiParts thus effectively lose access to the\r\nprimaryStage, which is a good thing for encapsulation.\r\n\r\n* UiPartLoader: rename loadUiPart() to initUiPart()\r\n\r\nAll other variants of loadUiPart() will reconstruct the UiPart based on\r\nthe value of \"fx:controller\" in its FXML file.\r\n\r\nOnly loadUiPart(T seedUiPart) does not -- it simply sets up the FXML\r\nscene graph using the existing UiPart object provided.\r\n\r\nTo highlight the difference in behaviour of this method from the others,\r\nrename this method to `initUiPart()`.\r\n\r\n* UiPartLoader: add single argument variant of loadUiPart()","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/4b99eb594378e44bae3dcf454c2b94cd2215d183"},{"sha":"6c99bdbd9ba4aac9c64643106428409cf0d769b7","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":"build.gradle: add `run` and `runShadow` tasks (#178)\n\nThe `run` and `runShadow` tasks provide a convenient way for developers\r\nto run the built application from its *.class files or the built fat JAR\r\nrespectively.\r\n\r\nThis is accomplished using the application plugin[1] which implements\r\nthe 'run' task.\r\n\r\nThe shadow plugin, which we already use, will automatically detect the\r\n`application` plugin and will integrate with it[2], providing the\r\n`runShadow` task. It also knows that `mainClassName` should be used\r\nas the \"Main-Class\" of the JAR manifest, so we don't need to specify\r\nthat anymore.\r\n\r\nWe add the `mainClassName` and `plugin` lines OUTSIDE of the\r\n`allprojects` block because the question of \"which class should be run\"\r\nis Gradle project-specific and only applicable to the root project.\r\n\r\n[1] https://docs.gradle.org/current/userguide/application_plugin.html\r\n[2] http://imperceptiblethoughts.com/shadow/#integrating_with_application_plugin","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/6c99bdbd9ba4aac9c64643106428409cf0d769b7"},{"sha":"7ff3ad82caaf32e71def3d26f133c1152cad0ac6","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":" checkstyle: check for trailing whitespace  #179 (#180)\n\n* codestyle: remove trailing whitespace\r\n\r\nSome lines in the code look like an empty line, but actually contain\r\nspaces.\r\n\r\nTo be consistent with the rest of the code, let's make sure all empty\r\nlines are actually empty.\r\n\r\n* checkstyle: check for trailing whitespace\r\n\r\nTo ensure that no more trailing whitespace is introduced into our code\r\nbase, add a check for it.","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/7ff3ad82caaf32e71def3d26f133c1152cad0ac6"},{"sha":"8d9ff226f33c05a1acac43e611d94220c089d8f8","author":{"name":"Jia Yee","email":"fe726c11c5ec3f72474fae7869508b989c4f4a97@gmail.com"},"message":"Correct typos and grammatical errors in DG (#198)","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/8d9ff226f33c05a1acac43e611d94220c089d8f8"},{"sha":"ba0900e84dd5ca552cd93a6f6c10634bbcf56426","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":"[188] Construct StatusBarFooter in FXML fully\n\nStatusBarFooter currently constructs and sets up its StatusBar controls\r\nusing pure code.\r\n\r\nThe StatusBar control is actually a real control that can be initialized\r\ndirectly in the FXML file. We can avoid placeholder elements and make\r\nthings simpler by just doing that.\r\n\r\nNow, one may think: \"This means Scene Builder cannot edit this FXML file\r\nany more!\", since the StatusBar control comes from controlsfx, which is\r\nnot supported by Scene Builder by default. However,\r\n\r\n1. Scene Builder can actually be configured[1] to support the custom\r\n   controls from controlsfx, allowing it to edit the FXML file.\r\n\r\n2. Having too many placeholder nodes, and constructing the actual scene\r\n   graph in code, kind of defeats the advantage of FXML which is to\r\n   construct the scene graph declaratively without code.\r\n\r\n[1] http://stackoverflow.com/a/30078204","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/ba0900e84dd5ca552cd93a6f6c10634bbcf56426"},{"sha":"e088d3dd380e3f58ef7153611d817250d2cef333","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":"checkstyle: accept LF, CR or CRLF as line endings (#194)\n\nChecking out this repo on a Windows machine with a vanilla Git config,\r\nthen running `gradlew.bat checkstyleMain` gives the following errors:\r\n\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\MainApp.java:0: File does not end with a newline. [NewlineAtEndOfF\r\n    ile]\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\commons\\core\\ComponentManager.java:0: File does not end with a new\r\n    line. [NewlineAtEndOfFile]\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\commons\\core\\Config.java:0: File does not end with a newline. [New\r\n    lineAtEndOfFile]\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\commons\\core\\EventsCenter.java:0: File does not end with a newline\r\n    . [NewlineAtEndOfFile]\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\commons\\core\\GuiSettings.java:0: File does not end with a newline.\r\n     [NewlineAtEndOfFile]\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\commons\\core\\LogsCenter.java:0: File does not end with a newline.\r\n    [NewlineAtEndOfFile]\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\commons\\core\\Messages.java:0: File does not end with a newline. [N\r\n    ewlineAtEndOfFile]\r\n    [ant:checkstyle] [ERROR] C:\\Users\\pyokagan\\pyk\\addressbook-level4\\src\\main\\java\\\r\n    seedu\\address\\commons\\core\\UnmodifiableObservableList.java:0: File does not end\r\n    with a newline. [NewlineAtEndOfFile]\r\n    ...etc\r\n\r\nThis goes on for every single Java file.\r\n\r\nThis is because this repo's files uses LF as the line separator.\r\nHowever, the default \"lineSeparator\" value of the \"NewlineAtEndOfFile\"\r\ncheck is CRLF on Windows[1], hence these errors.\r\n\r\nOne may argue that we could switch on `core.autocrlf` in Git, which\r\nwould tell Git to automatically convert all LF line endings to CRLF,\r\nthus avoiding this problem. However, this not only places an additional\r\nburden on Windows users to configure Git properly, it also does not\r\nhandle the use cases where a developer is not using Git. The developer\r\nmay, for example, instead get hold of the repo by downloading the ZIP\r\nfile using Github's \"Download as ZIP\"[2] functionality, and will thus\r\nstill have this problem as the downloaded ZIP contents will still\r\ncontain LF line endings.\r\n\r\nThus, we should either switch the \"lineSeparator\" property to \"lf\",\r\naccepting only LF line endings, or \"lf_cr_crlf\", accepting LF, CR or\r\nCRLF line endings. (Checkstyle does not support just LF and CRLF only)\r\n\r\nHowever, some developers may have `core.autocrlf` accidentally set, or\r\nmay even prefer to use CRLF line endings in their working copy. As such,\r\nlet's go the route of allowing LF, CR or CRLF as line endings.\r\n\r\n[1] http://checkstyle.sourceforge.net/config_misc.html#NewlineAtEndOfFile\r\n[2] https://github.com/se-edu/addressbook-level4/archive/master.zip","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/e088d3dd380e3f58ef7153611d817250d2cef333"},{"sha":"e68f4529ea42ac5929472b76fbb4a7bf9e8cbbf2","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":"checkstyle: ensure curly brackets have whitespace around them #181 (#182)\n\n* codestyle: ensure curly brackets are separated by whitespace\r\n\r\nThe Java coding standard[1] requires that curly brackets ({}) be\r\nsurrounded by whitespace.\r\n\r\nHowever, there are several violations of this requirement in the code\r\nbase. e.g.\r\n\r\n    protected void raise(BaseEvent event){\r\n    -------------------------------------^\r\n                        Space required before '{'\r\n\r\nFix all of these code style violations.\r\n\r\n[1] https://oss-generic.github.io/process/codingstandards/coding-standards-java.html#methods\r\n\r\n* checkstyle: ensure curly brackets have whitespace around them\r\n\r\nThere used to be methods in the code base where the curly brackets ({})\r\nare not separated by whitespace:\r\n\r\n    protected void raise(BaseEvent event){\r\n    -------------------------------------^\r\n                        Space required before '{'\r\n\r\nOur checkstyle configuration failed to catch these errors because we did\r\nnot tell checkstyle to check for the LCURLY, RCURLY and SLIST (statement\r\nlist) tokens. Fix this in the checkstyle config file so that such code\r\nstyle violations will not happen again.","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/e68f4529ea42ac5929472b76fbb4a7bf9e8cbbf2"},{"sha":"845249d099d355a00bb33922e1a379033b0006dc","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":"[#186] Construct BrowserPanel in FXML (#208)\n\n* Construct BrowserPanel using FXML\r\n\r\nThe DeveloperGuide states that the layout of individual UiParts are\r\nspecified in matching `.fxml` files. e.g. The layout of\r\n`MainWindow.java` is specified in `MainWindow.fxml`.\r\n\r\nWhile this is true for almost all UiParts, there is one oddball UiPart\r\nthat does not have a corresponding `.fxml` file -- BrowserPanel.\r\n\r\nFor consistency with the rest of the UiParts, let's construct the\r\nBrowserPanel using FXML rather than using code.\r\n\r\n* Remove DefaultBrowserPlaceHolderScreen.fxml\r\n\r\nIt is not being used at all.","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/845249d099d355a00bb33922e1a379033b0006dc"},{"sha":"38a52f5ad5e1bb97574f38950aa3b1246cc3b469","author":{"name":"Damith C. Rajapakse","email":"962f9e179df0a204beb06f45f26c094eee4ac0cd@gmail.com"},"message":"Move page title to the top of README","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/38a52f5ad5e1bb97574f38950aa3b1246cc3b469"},{"sha":"d1d17d8b8f5caa337653ab376411c27110303e40","author":{"name":"Edmund Mok","email":"70005bb34d3779d1c2be1015fc5afeaf30454fc0@outlook.com"},"message":"[#173] Add background color to tags (#200)","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/d1d17d8b8f5caa337653ab376411c27110303e40"},{"sha":"d2d6c5522cb94f5e9dea78c297fa254806925901","author":{"name":"Huang Chao","email":"e8823178cae16b1dabaf7381c8b0518c6a8057d8@gmail.com"},"message":"[#149] Support F1 accelerator even when the focus is not in the list (#210)","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/d2d6c5522cb94f5e9dea78c297fa254806925901"},{"sha":"0c529e619ae7c7166599a8ca8777560b6e183ac9","author":{"name":"Damith C. Rajapakse","email":"962f9e179df0a204beb06f45f26c094eee4ac0cd@gmail.com"},"message":"Set theme jekyll-theme-cayman","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/0c529e619ae7c7166599a8ca8777560b6e183ac9"},{"sha":"ce4104b2c15037c0ddf0a4e138a79813d7a480af","author":{"name":"Damith C. Rajapakse","email":"962f9e179df0a204beb06f45f26c094eee4ac0cd@gmail.com"},"message":"Set theme jekyll-theme-tactile","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/ce4104b2c15037c0ddf0a4e138a79813d7a480af"},{"sha":"6cab4c4b826af8d8efc52c768f893d4a0cad89c5","author":{"name":"Damith C. Rajapakse","email":"962f9e179df0a204beb06f45f26c094eee4ac0cd@gmail.com"},"message":"Set theme jekyll-theme-minimal","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/6cab4c4b826af8d8efc52c768f893d4a0cad89c5"},{"sha":"979e68098b5f3a57d739cdfbc5f43e6fd1ebb048","author":{"name":"Damith C. Rajapakse","email":"962f9e179df0a204beb06f45f26c094eee4ac0cd@gmail.com"},"message":"Add tip about using pptx files to create diagrams","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/979e68098b5f3a57d739cdfbc5f43e6fd1ebb048"},{"sha":"c557d20f894eec40b3eed690a91a0fde9f6182d1","author":{"name":"Martin Choo","email":"a49b54dbb48d38a915f3a39fb814713cc99937c8@users.noreply.github.com"},"message":"[161] Include test code in coverage analysis","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/c557d20f894eec40b3eed690a91a0fde9f6182d1"},{"sha":"311ab3c0ccd4d6e49d81234e6d8fe42646e3c834","author":{"name":"Damith C. Rajapakse","email":"962f9e179df0a204beb06f45f26c094eee4ac0cd@gmail.com"},"message":"Add additional info to LO-CodeCoverage","distinct":false,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/311ab3c0ccd4d6e49d81234e6d8fe42646e3c834"},{"sha":"b3d0b61e9f8cc3a0c1afe545f1fdd8012fbc7a1e","author":{"name":"Paul Tan","email":"47694dae389453634f0f8d3a618ffe16016d5f4c@gmail.com"},"message":"Add appveyor.yml\n\nAppVeyor[1] is a continuous integration service used to build and test\nprojects on a Windows VM. Adding AppVeyor support to this project will\nallow us to easily ensure that our tests do not break on Windows.\n\nAdd an appveyor.yml file that will teach AppVeyor how to build this\nproject and run its tests.\n\n[1] https://www.appveyor.com/","distinct":true,"url":"https://api.github.com/repos/pyokagan/addressbook-level4/commits/b3d0b61e9f8cc3a0c1afe545f1fdd8012fbc7a1e"}]}
{"actor":{"display_login":"pyokagan"}}