| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Copyright (C) 2013 The Android Open Source Project |
| |
| 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. |
| --> |
| <ui:UiBinder |
| xmlns:ui='urn:ui:com.google.gwt.uibinder' |
| xmlns:c='urn:import:com.google.gerrit.client.change' |
| xmlns:g='urn:import:com.google.gwt.user.client.ui' |
| xmlns:x='urn:import:com.google.gerrit.client.ui'> |
| <ui:with field='ico' type='com.google.gerrit.client.GerritResources'/> |
| <ui:with field='res' type='com.google.gerrit.client.change.Resources'/> |
| <ui:style gss='false' type='com.google.gerrit.client.change.ChangeScreen.Style'> |
| @eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor; |
| @eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor; |
| |
| @def COMMIT_WIDTH 560px; |
| @def HEADER_HEIGHT 30px; |
| |
| @def BUTTON_HEIGHT 14px; |
| |
| .cs2 { |
| margin-bottom: 1em; |
| } |
| |
| .headerLine { |
| position: relative; |
| background-color: trimColor; |
| height: HEADER_HEIGHT; |
| margin: 0 -5px; |
| padding: 0 5px; |
| } |
| |
| .subjectLine { |
| position: relative; |
| width: COMMIT_WIDTH; |
| height: HEADER_HEIGHT; |
| background-color: trimColor; |
| color: textColor; |
| font-family: sans-serif; |
| } |
| .subjectText { |
| width: 460px; |
| height: HEADER_HEIGHT; |
| line-height: HEADER_HEIGHT; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
| |
| .infoLine { |
| position: absolute; |
| top: 0; |
| left: COMMIT_WIDTH; |
| height: HEADER_HEIGHT; |
| padding-left: 25px; |
| } |
| |
| .infoLineHeaderButtons { |
| display: inline-block; |
| height: HEADER_HEIGHT; |
| } |
| .statusRight { |
| position: absolute; |
| top: 0; |
| right: 0; |
| height: HEADER_HEIGHT; |
| } |
| .idAndStatus { |
| display: inline-block; |
| position: relative; |
| height: HEADER_HEIGHT; |
| } |
| .star { |
| position: absolute; |
| top: 5px; |
| right: 2px; |
| cursor: pointer; |
| outline: none; |
| } |
| .changeId { |
| width: 300px; |
| white-space: nowrap; |
| line-height: HEADER_HEIGHT; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
| .statusText { |
| font-weight: bold; |
| } |
| .privateText { |
| font-weight: bold; |
| } |
| |
| .wipText { |
| font-weight: bold; |
| } |
| |
| div.popdown { |
| display: inline-block; |
| margin-top: 2px; |
| margin-left: 5px; |
| margin-right: 25px; |
| } |
| |
| .popdown button { |
| cursor: pointer; |
| height: 25px; |
| border: none; |
| background-color: trimColor; |
| margin: 0 0 0 -2px; |
| padding-left: 2px; |
| padding-right: 2px; |
| min-width: 100px; |
| } |
| .popdown button div { |
| padding-left: 6px; |
| padding-right: 6px; |
| } |
| .popdown button div:after { |
| content: " \25bc"; |
| } |
| .popdown button.selected { |
| font-weight: bold; |
| } |
| .popdown button:focus { |
| outline: none; |
| } |
| |
| .headerButtons button:disabled, |
| #change_infoTable button:disabled, |
| .popdown button:disabled { |
| background-color: #999; |
| background-image: -webkit-linear-gradient(top, #999, #999); |
| } |
| |
| .infoTable { |
| border-spacing: 0; |
| } |
| |
| .infoTable th { |
| width: 60px; |
| color: #444; |
| font-weight: normal; |
| vertical-align: top; |
| text-align: left; |
| padding: 0 5px 0 0; |
| } |
| |
| .projectSettings { |
| float: right; |
| cursor: pointer; |
| } |
| |
| .infoColumn { |
| width: 440px; |
| padding-left: 17px; |
| padding-right: 17px; |
| vertical-align: top; |
| } |
| |
| #change_infoTable { |
| border-spacing: 0; |
| width: 100%; |
| margin-left: 2px; |
| margin-right: 5px; |
| } |
| |
| .notMergeable { |
| float: right; |
| font-weight: bold; |
| color: #d00; |
| } |
| |
| .commitColumn, .relatedColumn { |
| padding: 0; |
| vertical-align: top; |
| } |
| .commitColumn { width: COMMIT_WIDTH; } |
| .relatedColumn { width: 375px; } |
| |
| .labels { |
| border-spacing: 0; |
| padding: 0; |
| } |
| .labelName { |
| color: #444; |
| vertical-align: top; |
| text-align: left; |
| padding-top: 3px; |
| padding-right: 5px; |
| white-space: nowrap; |
| } |
| |
| .label_user { |
| display: inline-block; |
| margin-bottom: 2px; |
| padding: 1px 3px 0px 3px; |
| border-radius: 5px; |
| -webkit-border-radius: 5px; |
| background: trimColor; |
| border: 1px solid trimColor; |
| white-space: nowrap; |
| } |
| .label_user img.avatar { |
| margin: 0 2px 0 0; |
| width: 16px; |
| height: 16px; |
| vertical-align: bottom; |
| } |
| .label_user button { |
| cursor: pointer; |
| padding: 0; |
| margin: 0 0 0 5px; |
| border: 0; |
| background-color: transparent; |
| white-space: nowrap; |
| } |
| |
| .label_ok {color: #060;} |
| .label_reject {color: #d14836;} |
| .label_need {color: #000;} |
| .label_may {color: #777;} |
| |
| .hashtagName { |
| display: inline-block; |
| height: 15px; |
| margin-bottom: 2px; |
| padding: 1px 3px 1px 3px; |
| border-radius: 5px; |
| -webkit-border-radius: 5px; |
| background: #E2F5FF; |
| border: 1px solid #579FDA; |
| white-space: nowrap; |
| } |
| |
| .hashtagName a, |
| .hashtagName button { |
| position: relative; |
| top: -4px; |
| } |
| |
| .hashtagName button { |
| cursor: pointer; |
| padding: 0; |
| margin: 0 0 0 5px; |
| border: 0; |
| background-color: transparent; |
| white-space: nowrap; |
| } |
| |
| .hashtagIcon img { |
| position: relative; |
| top: 4px; |
| } |
| |
| .headerButtons button { |
| margin: 5.286px 3px 0 0; |
| text-align: center; |
| font-size: 8pt; |
| font-weight: bold; |
| cursor: pointer; |
| border: 2px solid; |
| color: rgba(0, 0, 0, 0.15); |
| background-color: #f5f5f5; |
| -webkit-border-radius: 2px; |
| -webkit-box-sizing: content-box; |
| } |
| .headerButtons button div { |
| color: #444; |
| min-width: 54px; |
| white-space: nowrap; |
| height: BUTTON_HEIGHT; |
| line-height: BUTTON_HEIGHT; |
| } |
| button.highlight { |
| background-color: #4d90fe; |
| } |
| button.highlight div { color: #fff; } |
| |
| .sectionHeader { |
| position: relative; |
| background-color: trimColor; |
| font-weight: bold; |
| color: textColor; |
| height: 20px; |
| line-height: 20px; |
| margin: 0 -5px; |
| padding: 5px 5px; |
| } |
| .sectionHeader .headerButtons { |
| position: absolute; |
| left: 300px; |
| top: 2px; |
| height: 18px; |
| line-height: 18px; |
| border-left: 1px inset #fff; |
| padding-left: 5px; |
| padding-top: 3px; |
| padding-bottom: 3px; |
| } |
| .sectionHeader button { margin-top: 0; } |
| |
| .diffBase { |
| display: inline-block; |
| height: 18px; |
| line-height: 18px; |
| font-size: smaller; |
| font-weight: normal; |
| vertical-align: top; |
| } |
| .diffBase select { |
| margin: 0; |
| border: 2px solid rgba(0, 0, 0, 0.15); |
| height: 20px; |
| font-size: 8pt; |
| font-weight: bold; |
| border-radius: 2px; |
| background-color: #f5f5f5 |
| } |
| |
| .replyBox { |
| background-color: trimColor; |
| } |
| |
| .ownerPanel img, .uploaderPanel img { |
| margin: 0 2px 0 0; |
| width: 16px; |
| height: 16px !important; |
| vertical-align: bottom; |
| } |
| |
| .headerExtension { |
| display: inline-block; |
| float: right; |
| } |
| |
| .headerExtension>div>div { |
| float: left; |
| } |
| |
| .changeExtension { |
| padding-top: 5px; |
| } |
| |
| .relatedExtension { |
| padding-top: 5px; |
| } |
| |
| .commitExtension { |
| padding-top: 5px; |
| } |
| |
| .historyExtension { |
| display: inline-block; |
| float: right; |
| } |
| |
| .pushCertStatus { |
| padding-left: 5px; |
| } |
| |
| .notCurrentPatchSet { |
| background-color: #FFA62F; |
| } |
| </ui:style> |
| |
| <g:HTMLPanel styleName='{style.cs2}'> |
| <g:HTMLPanel styleName='{style.headerLine}' ui:field='headerLine'> |
| <div class='{style.subjectLine}'> |
| <div class='{style.idAndStatus}'> |
| <span class='{style.changeId}'> |
| <ui:msg>Change <g:Anchor ui:field='permalink' title='Reload the change (Shortcut: R)'> |
| <ui:attribute name='title'/> |
| </g:Anchor> - <span ui:field='statusText' class='{style.statusText}'/> |
| <span ui:field='privateText' class='{style.privateText}'/> |
| <span ui:field='wipText' class='{style.wipText}'/></ui:msg> |
| </span> |
| <g:SimplePanel ui:field='headerExtension' styleName='{style.headerExtension}'/> |
| </div> |
| </div> |
| |
| <div class='{style.infoLine}'> |
| <div class='{style.headerButtons} {style.infoLineHeaderButtons}'> |
| <g:Button ui:field='reply' |
| styleName='' |
| title='' |
| visible='false'> |
| <ui:attribute name='title'/> |
| </g:Button> |
| <c:QuickApprove ui:field='quickApprove' |
| styleName='{style.highlight}' |
| title='Apply score with one click'> |
| <ui:attribute name='title'/> |
| </c:QuickApprove> |
| <g:Button ui:field='publishEdit' |
| styleName='{style.highlight}' visible='false'> |
| <div><ui:msg>Publish Edit</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='rebaseEdit' |
| styleName='{style.highlight}' visible='false'> |
| <div><ui:msg>Rebase Edit</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='deleteEdit' styleName='' visible='false'> |
| <div><ui:msg>Delete Edit</ui:msg></div> |
| </g:Button> |
| <g:SimplePanel ui:field='headerExtensionMiddle' styleName='{style.headerExtension}'/> |
| </div> |
| </div> |
| |
| <div class='{style.statusRight}'> |
| <g:FlowPanel styleName='{style.popdown}'> |
| <g:Button ui:field='includedIn' styleName='' visible="false"> |
| <div><ui:msg>Included in</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='patchSets' styleName=''> |
| <div ui:field='patchSetsText'/> |
| </g:Button> |
| <g:Button ui:field='download' styleName=''> |
| <div><ui:msg>Download</ui:msg></div> |
| </g:Button> |
| <g:SimplePanel ui:field='headerExtensionRight' styleName='{style.headerExtension}'/> |
| </g:FlowPanel> |
| <c:StarIcon ui:field='star' styleName='{style.star}' title='Star the change (Shortcut: s)'> |
| <ui:attribute name='title'/> |
| </c:StarIcon> |
| </div> |
| </g:HTMLPanel> |
| |
| <table class='{style.infoTable}'> |
| <tr> |
| <td class='{style.commitColumn}'> |
| <c:CommitBox ui:field='commit'/> |
| <g:SimplePanel ui:field='commitExtension' styleName='{style.commitExtension}'/> |
| </td> |
| <td class='{style.infoColumn}'> |
| <table id='change_infoTable'> |
| <tr> |
| <th><ui:msg>Owner</ui:msg></th> |
| <td> |
| <g:FlowPanel ui:field='ownerPanel' styleName='{style.ownerPanel}'> |
| <x:InlineHyperlink ui:field='ownerLink'/> |
| </g:FlowPanel> |
| </td> |
| </tr> |
| <tr ui:field='uploaderRow'> |
| <th><ui:msg>Uploader</ui:msg></th> |
| <td> |
| <g:FlowPanel ui:field='uploaderPanel' styleName='{style.uploaderPanel}'> |
| <g:InlineLabel ui:field='uploaderName'/> |
| </g:FlowPanel> |
| </td> |
| </tr> |
| <tr ui:field='assigneeRow'> |
| <th><ui:msg>Assignee</ui:msg></th> |
| <td> |
| <c:Assignee ui:field='assignee'/> |
| </td> |
| </tr> |
| <tr> |
| <th><ui:msg>Reviewers</ui:msg></th> |
| <td> |
| <c:Reviewers ui:field='reviewers'/> |
| </td> |
| </tr> |
| <tr> |
| <th/> |
| <td ui:field='ccText'/> |
| </tr> |
| <tr> |
| <th><ui:msg>Project</ui:msg></th> |
| <td><x:InlineHyperlink ui:field='projectDashboard' |
| title='Go to project dashboard'> |
| <ui:attribute name='title'/> |
| </x:InlineHyperlink> |
| <a ui:field='projectSettingsLink' |
| class='{style.projectSettings}'> |
| <g:Image |
| ui:field='projectSettings' |
| resource='{ico.gear}' |
| title='Go to project settings'> |
| <ui:attribute name='title'/> |
| </g:Image> |
| </a> |
| </td> |
| </tr> |
| <tr> |
| <th><ui:msg>Branch</ui:msg></th> |
| <td><x:InlineHyperlink ui:field='branchLink' |
| title='Search for changes on this branch'> |
| <ui:attribute name='title'/> |
| </x:InlineHyperlink> |
| </td> |
| </tr> |
| <tr> |
| <th><ui:msg>Topic</ui:msg></th> |
| <td><c:Topic ui:field='topic'/></td> |
| </tr> |
| <tr ui:field='strategy'> |
| <th><ui:msg>Strategy</ui:msg></th> |
| <td> |
| <span ui:field='submitActionText'/> |
| <div ui:field='notMergeable' |
| class='{style.notMergeable}' |
| style='display: none' |
| aria-hidden='true' |
| title='The change cannot be merged due to a path conflict. Rebase the change and upload the rebased commit for review.'> |
| <ui:attribute name='title'/> |
| <ui:msg>Cannot Merge</ui:msg> |
| </div> |
| </td> |
| </tr> |
| <tr> |
| <th ui:field='actionText'/> |
| <td ui:field='actionDate'/> |
| </tr> |
| <tr ui:field='hashtagTableRow'> |
| <th><ui:msg>Hashtags</ui:msg></th> |
| <td colspan='2'> |
| <c:Hashtags ui:field='hashtags'/> |
| </td> |
| </tr> |
| <tr><td colspan='2'><c:Actions ui:field='actions'/></td></tr> |
| </table> |
| <hr/> |
| <c:Labels ui:field='labels' styleName='{style.labels}'/> |
| <g:SimplePanel ui:field='changeExtension' styleName='{style.changeExtension}'/> |
| <div id='change_plugins'/> |
| </td> |
| <td class='{style.relatedColumn}'> |
| <c:RelatedChanges ui:field='related'/> |
| <g:SimplePanel ui:field='relatedExtension' styleName='{style.relatedExtension}'/> |
| </td> |
| </tr> |
| </table> |
| |
| <div class='{style.sectionHeader} {style.headerButtons}'> |
| <ui:msg>Files</ui:msg> |
| <g:Button ui:field='addFile' |
| title='Add file to this change' |
| styleName='' |
| visible='false'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Add…</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='deleteFile' |
| title='Delete file from the repository' |
| styleName='' |
| visible='false'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Delete…</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='renameFile' |
| title='Rename file in the repository' |
| styleName='' |
| visible='false'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Rename…</ui:msg></div> |
| </g:Button> |
| <div class='{style.headerButtons}'> |
| <g:Button ui:field='openAll' |
| styleName='' |
| title='Open each file in a new tab'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Open All</ui:msg></div> |
| </g:Button> |
| <div class='{style.diffBase}'> |
| <ui:msg>Diff against: <g:ListBox ui:field='diffBase' styleName=''/></ui:msg> |
| </div> |
| <g:Button ui:field='editMode' |
| styleName='' |
| visible='false' |
| title='Switch file table to edit mode'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Edit</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='reviewMode' |
| styleName='' |
| visible='false' |
| title='Done with edit mode'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Done Editing</ui:msg></div> |
| </g:Button> |
| </div> |
| </div> |
| <c:FileTable ui:field='files'/> |
| |
| <div class='{style.sectionHeader}'> |
| <ui:msg>History</ui:msg> |
| <div class='{style.headerButtons}'> |
| <g:Button ui:field='expandAll' |
| styleName='' |
| title='Expand all messages in the change history'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Expand All</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='collapseAll' |
| styleName='' |
| visible='false' |
| title='Collapse all messages in the change history'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Collapse All</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='hideTaggedComments' |
| styleName='' |
| visible='false' |
| title='Hide tagged comments'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Hide tagged comments</ui:msg></div> |
| </g:Button> |
| <g:Button ui:field='showTaggedComments' |
| styleName='' |
| visible='false' |
| title='Show tagged comments'> |
| <ui:attribute name='title'/> |
| <div><ui:msg>Show tagged comments</ui:msg></div> |
| </g:Button> |
| <g:SimplePanel ui:field='historyExtensionRight' styleName='{style.historyExtension}'/> |
| </div> |
| </div> |
| <c:History ui:field='history'/> |
| </g:HTMLPanel> |
| </ui:UiBinder> |