diff --git a/guacamole/src/main/webapp/app/client/styles/client.css b/guacamole/src/main/webapp/app/client/styles/client.css index d7ff9aef1..615849ca3 100644 --- a/guacamole/src/main/webapp/app/client/styles/client.css +++ b/guacamole/src/main/webapp/app/client/styles/client.css @@ -22,357 +22,23 @@ body.client { background: black; - font-family: FreeSans, Helvetica, Arial, sans-serif; padding: 0; margin: 0; overflow: hidden; } -img { - border: none; -} - -.software-cursor { - cursor: url('images/mouse/blank.gif'),url('images/mouse/blank.cur'),default; - overflow: hidden; - cursor: none; -} - -.guac-error .software-cursor { - cursor: default; -} - -* { - -webkit-tap-highlight-color: rgba(0,0,0,0); -} - -.event-target { - position: fixed; - opacity: 0; -} - -div.main { - overflow: auto; - position: fixed; - top: 0; - bottom: 0; - right: 0; - left: 0; -} - -div.displayOuter { - height: 100%; - width: 100%; - position: absolute; - left: 0; - top: 0; - display: table; -} - -div.displayMiddle { - width: 100%; - display: table-cell; - vertical-align: middle; - text-align: center; -} - -div.display { - display: inline-block; -} - -div.display * { - position: relative; -} - -div.display > * { - margin-left: auto; - margin-right: auto; -} - -div.magnifier-background { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: 1; - overflow: hidden; -} - -div.magnifier { - - position: absolute; - left: 0; - top: 0; - - box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.75); - width: 50%; - height: 50%; - overflow: hidden; - -} - -.pan-overlay, -.type-overlay { - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: 1; -} - -.pan-overlay .indicator { - position: fixed; - background-size: 32px 32px; - -moz-background-size: 32px 32px; - -webkit-background-size: 32px 32px; - -khtml-background-size: 32px 32px; - background-position: center; - background-repeat: no-repeat; - opacity: 0.8; -} - -.pan-overlay .indicator.up { - - top: 0; - left: 0; - right: 0; - height: 32px; - - background-image: url('images/arrows/arrows-u.png'); - -} - -.pan-overlay .indicator.down { - - bottom: 0; - left: 0; - right: 0; - height: 32px; - - background-image: url('images/arrows/arrows-d.png'); - -} - -.pan-overlay .indicator.left { - - top: 0; - bottom: 0; - left: 0; - width: 32px; - - background-image: url('images/arrows/arrows-l.png'); - -} - -.pan-overlay .indicator.right { - - top: 0; - bottom: 0; - right: 0; - width: 32px; - - background-image: url('images/arrows/arrows-r.png'); - -} - /* Viewport Clone */ -div#viewportClone { +#viewportClone { display: table; height: 100%; width: 100%; position: fixed; left: 0; top: 0; - visibility: hidden; } -p.hint { - - border: 0.25em solid rgba(255, 255, 255, 0.25); - background: black; - opacity: 0.75; - - color: white; - - max-width: 10em; - padding: 1em; - margin: 1em; - - position: absolute; - left: 0; - top: 0; - - box-shadow: 0.25em 0.25em 0.25em rgba(0, 0, 0, 0.75); - -} - -#notificationArea { - position: fixed; - right: 0.5em; - bottom: 0.5em; - max-width: 25%; - min-width: 10em; -} - -.notification { - - font-size: 0.7em; - text-align: center; - - border: 1px solid rgba(0, 0, 0, 0.75); - -moz-border-radius: 0.2em; - -webkit-border-radius: 0.2em; - -khtml-border-radius: 0.2em; - border-radius: 0.2em; - background: white; - - color: black; - - padding: 0.5em; - margin: 1em; - overflow: hidden; - - box-shadow: 0.1em 0.1em 0.2em rgba(0, 0, 0, 0.25); - -} - -.notification div { - display: inline-block; - text-align: left; -} - -.notification .title-bar { - display: block; - white-space: nowrap; - font-weight: bold; - - border-bottom: 1px solid black; - padding-bottom: 0.5em; - margin-bottom: 0.5em; -} - -.notification .title-bar * { - vertical-align: middle; -} - -.notification .close { - - background: url('images/action-icons/guac-close.png'); - background-size: 10px 10px; - -moz-background-size: 10px 10px; - -webkit-background-size: 10px 10px; - -khtml-background-size: 10px 10px; - - width: 10px; - height: 10px; - - float: right; - cursor: pointer; - -} - -@keyframes progress { - from {background-position: 0px 0px;} - to {background-position: 64px 0px;} -} - -@-webkit-keyframes progress { - from {background-position: 0px 0px;} - to {background-position: 64px 0px;} -} - -.notification .caption, -.download.notification .caption { - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.upload.notification .status, -.download.notification .status { - color: red; - font-size: 1em; - padding: 1em; -} - -.download.notification .progress, -.upload.notification .progress, -.download.notification .download { - - margin-top: 1em; - margin-left: 0.75em; - padding: 0.25em; - min-width: 5em; - - border: 1px solid gray; - -moz-border-radius: 0.2em; - -webkit-border-radius: 0.2em; - -khtml-border-radius: 0.2em; - border-radius: 0.2em; - - text-align: center; - float: right; - - position: relative; - -} - -.upload.notification .progress { - float: none; - width: 80%; - margin-left: auto; - margin-right: auto; -} - -.download.notification .progress div, -.upload.notification .progress div { - position: relative; -} - -.download.notification .progress .bar, -.upload.notification .progress .bar { - background: #A3D655; - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 0; - box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.5), - inset -1px -1px 0 rgba( 0, 0, 0, 0.1), - 1px 1px 0 gray; -} - -.upload.notification .progress, -.download.notification .progress { - - background: #C2C2C2 url('images/progress.png'); - background-size: 16px 16px; - -moz-background-size: 16px 16px; - -webkit-background-size: 16px 16px; - -khtml-background-size: 16px 16px; - - animation-name: progress; - animation-duration: 2s; - animation-timing-function: linear; - animation-iteration-count: infinite; - - -webkit-animation-name: progress; - -webkit-animation-duration: 2s; - -webkit-animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - -} - -.download.notification .download { - background: rgb(16, 87, 153); - cursor: pointer; -} - #preload { visibility: hidden; position: absolute; @@ -382,239 +48,3 @@ p.hint { height: 0; overflow: hidden; } - -/* Menu */ - -#menu { - overflow: auto; - position: fixed; - top: 0; - bottom: 0; - max-width: 100%; - width: 480px; - background: #EEE; - box-shadow: inset -1px 0 2px white, 1px 0 2px black; - z-index: 10; - -webkit-transition: left 0.125s, opacity 0.125s; - -moz-transition: left 0.125s, opacity 0.125s; - -ms-transition: left 0.125s, opacity 0.125s; - -o-transition: left 0.125s, opacity 0.125s; - transition: left 0.125s, opacity 0.125s; -} - -#menu .content { - padding: 1em; -} - -#menu .content > * { - margin: 1em 0; -} - -#menu, #menu.closed { - left: -480px; - opacity: 0; -} - -#menu.open { - left: 0px; - opacity: 1; -} - -#clipboard-settings textarea { - width: 100%; - border: 1px solid #AAA; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; - white-space: pre; - display: block; -} - -#mouse-settings .choice { - text-align: center; -} - -#mouse-settings .choice .figure { - display: inline-block; - vertical-align: middle; - max-width: 80%; -} - -#keyboard-settings .caption { - font-size: 0.9em; - margin-left: 2em; - margin-right: 2em; -} - -#mouse-settings .figure .caption { - text-align: center; - font-size: 0.9em; -} - -#mouse-settings .figure img { - display: block; - max-width: 100%; - margin: 1em auto; -} - -#menu h3 { - - background: rgba(0, 0, 0, 0.4); - - padding: 0.25em 0.5em; - margin: 0; - font-size: 1em; - - color: white; - font-weight: bold; - -} - -#keyboard-settings .figure { - float: right; - max-width: 30%; - margin: 1em; -} - -#keyboard-settings .figure img { - max-width: 100%; -} - -#zoom-settings { - text-align: center; -} - -#zoom-out, #zoom-in, #zoom-state { - display: inline-block; - vertical-align: middle; -} - -#zoom-out, #zoom-in { - max-width: 3em; - border: 1px solid rgba(0, 0, 0, 0.5); - background: rgba(0, 0, 0, 0.1); - border-radius: 2em; - margin: 0.5em; - cursor: pointer; -} - -#zoom-out img, #zoom-in img { - max-width: 100%; - opacity: 0.5; -} - -#zoom-out:hover, #zoom-in:hover { - border: 1px solid rgba(0, 0, 0, 1); - background: #CDA; -} - -#zoom-out:hover img, #zoom-in:hover img { - opacity: 1; -} - -#zoom-state { - font-size: 2em; -} - -#text-input { - display: none; - position: absolute; - - border-top: 1px solid rgba(0, 0, 0, 0.5); - background: #CDA; - -} - -#text-input-field, -#text-input-buttons { - display: inline-block; - vertical-align: middle; -} - -#text-input-field { - width: 30%; - overflow: hidden; - white-space: nowrap; -} - -#text-input-buttons { - width: 70%; - text-align: right; -} - -#target { - - border: none; - border-radius: 0; - - display: inline-block; - vertical-align: middle; - font-size: 12pt; - width: 100%; - height: auto; - resize: none; - outline: none; - - margin: 0; - padding: 0.25em; - padding-left: 0; - background: #CDA; - overflow: hidden; - -} - -#text-input.open { - display: block; -} - -#sent-history { - display: inline-block; - vertical-align: middle; - padding: 0.25em; - padding-right: 0; -} - -#sent-history .sent-text { - display: inline-block; - vertical-align: baseline; - white-space: pre; - font-size: 12pt; - - animation: fadeout 1s linear; - -webkit-animation: fadeout 1s linear; - opacity: 0; -} - -#text-input-buttons button { - border: 1px solid rgba(0, 0, 0, 0.5); - background: none; - color: black; - box-shadow: none; - text-shadow: none; - padding: 0.25em; - max-width: 20%; - margin: 0.1em; - min-width: 3em; -} - -#text-input-buttons button:active, -#text-input-buttons button.pressed { - border: 1px solid rgba(255, 255, 255, 0.5); - background: rgba(0, 0, 0, 0.75); - color: white; -} - -.notification.message { - background: #DFD; - animation: fadein 0.125s linear, fadeout 2s 3s linear; - -webkit-animation: fadein 0.125s linear, fadeout 2s 3s linear; -} - -.notification.message .caption { - vertical-align: middle; - white-space: normal; - overflow: hidden; - text-overflow: ellipsis; -} - diff --git a/guacamole/src/main/webapp/app/client/styles/display.css b/guacamole/src/main/webapp/app/client/styles/display.css new file mode 100644 index 000000000..7fd44f623 --- /dev/null +++ b/guacamole/src/main/webapp/app/client/styles/display.css @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2013 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +.software-cursor { + cursor: url('images/mouse/blank.gif'),url('images/mouse/blank.cur'),default; + overflow: hidden; + cursor: none; +} + +.guac-error .software-cursor { + cursor: default; +} + +div.main { + overflow: auto; + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; +} + +div.displayOuter { + height: 100%; + width: 100%; + position: absolute; + left: 0; + top: 0; + display: table; +} + +div.displayMiddle { + width: 100%; + display: table-cell; + vertical-align: middle; + text-align: center; +} + +div.display { + display: inline-block; +} + +div.display * { + position: relative; +} + +div.display > * { + margin-left: auto; + margin-right: auto; +} diff --git a/guacamole/src/main/webapp/app/client/styles/menu.css b/guacamole/src/main/webapp/app/client/styles/menu.css new file mode 100644 index 000000000..df81d3211 --- /dev/null +++ b/guacamole/src/main/webapp/app/client/styles/menu.css @@ -0,0 +1,160 @@ +/* + * Copyright (C) 2013 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#menu { + overflow: auto; + position: fixed; + top: 0; + bottom: 0; + max-width: 100%; + width: 480px; + background: #EEE; + box-shadow: inset -1px 0 2px white, 1px 0 2px black; + z-index: 10; + -webkit-transition: left 0.125s, opacity 0.125s; + -moz-transition: left 0.125s, opacity 0.125s; + -ms-transition: left 0.125s, opacity 0.125s; + -o-transition: left 0.125s, opacity 0.125s; + transition: left 0.125s, opacity 0.125s; +} + +#menu .content { + padding: 1em; +} + +#menu .content > * { + margin: 1em 0; +} + +#menu, +#menu.closed { + left: -480px; + opacity: 0; +} + +#menu.open { + left: 0px; + opacity: 1; +} + +#menu #clipboard-settings textarea { + width: 100%; + border: 1px solid #AAA; + -moz-border-radius: 0.25em; + -webkit-border-radius: 0.25em; + -khtml-border-radius: 0.25em; + border-radius: 0.25em; + white-space: pre; + display: block; +} + +#menu #mouse-settings .choice { + text-align: center; +} + +#menu #mouse-settings .choice .figure { + display: inline-block; + vertical-align: middle; + max-width: 80%; +} + +#menu #keyboard-settings .caption { + font-size: 0.9em; + margin-left: 2em; + margin-right: 2em; +} + +#menu #mouse-settings .figure .caption { + text-align: center; + font-size: 0.9em; +} + +#menu #mouse-settings .figure img { + display: block; + max-width: 100%; + margin: 1em auto; +} + +#menu h3 { + + background: rgba(0, 0, 0, 0.4); + + padding: 0.25em 0.5em; + margin: 0; + font-size: 1em; + + color: white; + font-weight: bold; + +} + +#menu #keyboard-settings .figure { + float: right; + max-width: 30%; + margin: 1em; +} + +#menu #keyboard-settings .figure img { + max-width: 100%; +} + +#menu #zoom-settings { + text-align: center; +} + +#menu #zoom-out, +#menu #zoom-in, +#menu #zoom-state { + display: inline-block; + vertical-align: middle; +} + +#menu #zoom-out, +#menu #zoom-in { + max-width: 3em; + border: 1px solid rgba(0, 0, 0, 0.5); + background: rgba(0, 0, 0, 0.1); + border-radius: 2em; + margin: 0.5em; + cursor: pointer; +} + +#menu #zoom-out img, +#menu #zoom-in img { + max-width: 100%; + opacity: 0.5; +} + +#menu #zoom-out:hover, +#menu #zoom-in:hover { + border: 1px solid rgba(0, 0, 0, 1); + background: #CDA; +} + +#menu #zoom-out:hover img, +#menu #zoom-in:hover img { + opacity: 1; +} + +#menu #zoom-state { + font-size: 2em; +} diff --git a/guacamole/src/main/webapp/app/client/styles/notification.css b/guacamole/src/main/webapp/app/client/styles/notification.css new file mode 100644 index 000000000..65b4478b5 --- /dev/null +++ b/guacamole/src/main/webapp/app/client/styles/notification.css @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2013 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#notificationArea { + position: fixed; + right: 0.5em; + bottom: 0.5em; + max-width: 25%; + min-width: 10em; +} + +.notification { + + font-size: 0.7em; + text-align: center; + + border: 1px solid rgba(0, 0, 0, 0.75); + -moz-border-radius: 0.2em; + -webkit-border-radius: 0.2em; + -khtml-border-radius: 0.2em; + border-radius: 0.2em; + background: white; + + color: black; + + padding: 0.5em; + margin: 1em; + overflow: hidden; + + box-shadow: 0.1em 0.1em 0.2em rgba(0, 0, 0, 0.25); + +} + +.notification div { + display: inline-block; + text-align: left; +} + +.notification .title-bar { + display: block; + white-space: nowrap; + font-weight: bold; + + border-bottom: 1px solid black; + padding-bottom: 0.5em; + margin-bottom: 0.5em; +} + +.notification .title-bar * { + vertical-align: middle; +} + +.notification .close { + + background: url('images/action-icons/guac-close.png'); + background-size: 10px 10px; + -moz-background-size: 10px 10px; + -webkit-background-size: 10px 10px; + -khtml-background-size: 10px 10px; + + width: 10px; + height: 10px; + + float: right; + cursor: pointer; + +} + +@keyframes notification-progress { + from {background-position: 0px 0px;} + to {background-position: 64px 0px;} +} + +@-webkit-keyframes notification-progress { + from {background-position: 0px 0px;} + to {background-position: 64px 0px;} +} + +.notification .caption, +.notification.download .caption { + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.notification.upload .status, +.notification.download .status { + color: red; + font-size: 1em; + padding: 1em; +} + +.notification.download .progress, +.notification.upload .progress, +.notification.download .download { + + margin-top: 1em; + margin-left: 0.75em; + padding: 0.25em; + min-width: 5em; + + border: 1px solid gray; + -moz-border-radius: 0.2em; + -webkit-border-radius: 0.2em; + -khtml-border-radius: 0.2em; + border-radius: 0.2em; + + text-align: center; + float: right; + + position: relative; + +} + +.notification.upload .progress { + float: none; + width: 80%; + margin-left: auto; + margin-right: auto; +} + +.notification.download .progress div, +.notification.upload .progress div { + position: relative; +} + +.notification.download .progress .bar, +.notification.upload .progress .bar { + background: #A3D655; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 0; + box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.5), + inset -1px -1px 0 rgba( 0, 0, 0, 0.1), + 1px 1px 0 gray; +} + +.notification.upload .progress, +.notification.download .progress { + + background: #C2C2C2 url('images/progress.png'); + background-size: 16px 16px; + -moz-background-size: 16px 16px; + -webkit-background-size: 16px 16px; + -khtml-background-size: 16px 16px; + + animation-name: notification-progress; + animation-duration: 2s; + animation-timing-function: linear; + animation-iteration-count: infinite; + + -webkit-animation-name: notification-progress; + -webkit-animation-duration: 2s; + -webkit-animation-timing-function: linear; + -webkit-animation-iteration-count: infinite; + +} + +.notification.download .download { + background: rgb(16, 87, 153); + cursor: pointer; +} + +.notification.message { + background: #DFD; + animation: fadein 0.125s linear, fadeout 2s 3s linear; + -webkit-animation: fadein 0.125s linear, fadeout 2s 3s linear; +} + +.notification.message .caption { + vertical-align: middle; + white-space: normal; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/guacamole/src/main/webapp/app/client/styles/text-input.css b/guacamole/src/main/webapp/app/client/styles/text-input.css new file mode 100644 index 000000000..b782e54e8 --- /dev/null +++ b/guacamole/src/main/webapp/app/client/styles/text-input.css @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2013 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#text-input { + display: none; + position: absolute; + + border-top: 1px solid rgba(0, 0, 0, 0.5); + background: #CDA; + +} + +#text-input #text-input-field, +#text-input #text-input-buttons { + display: inline-block; + vertical-align: middle; +} + +#text-input #text-input-field { + width: 30%; + overflow: hidden; + white-space: nowrap; +} + +#text-input #text-input-buttons { + width: 70%; + text-align: right; +} + +#text-input #target { + + border: none; + border-radius: 0; + + display: inline-block; + vertical-align: middle; + font-size: 12pt; + width: 100%; + height: auto; + resize: none; + outline: none; + + margin: 0; + padding: 0.25em; + padding-left: 0; + background: #CDA; + overflow: hidden; + +} + +#text-input.open { + display: block; +} + +#text-input #sent-history { + display: inline-block; + vertical-align: middle; + padding: 0.25em; + padding-right: 0; +} + +#text-input #sent-history .sent-text { + display: inline-block; + vertical-align: baseline; + white-space: pre; + font-size: 12pt; + + animation: fadeout 1s linear; + -webkit-animation: fadeout 1s linear; + opacity: 0; +} + +#text-input #text-input-buttons button { + border: 1px solid rgba(0, 0, 0, 0.5); + background: none; + color: black; + box-shadow: none; + text-shadow: none; + padding: 0.25em; + max-width: 20%; + margin: 0.1em; + min-width: 3em; +} + +#text-input #text-input-buttons button:active, +#text-input #text-input-buttons button.pressed { + border: 1px solid rgba(255, 255, 255, 0.5); + background: rgba(0, 0, 0, 0.75); + color: white; +} diff --git a/guacamole/src/main/webapp/app/home/styles/connection.css b/guacamole/src/main/webapp/app/home/styles/connection.css new file mode 100644 index 000000000..9d659d20f --- /dev/null +++ b/guacamole/src/main/webapp/app/home/styles/connection.css @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2014 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +.group, +.connection { + cursor: pointer; +} + +.connection a, +.group a { + text-decoration:none; + color: black; +} + +.connection a:hover, +.group a:hover { + text-decoration:none; + color: black; +} + +.connection a:visited, +.group a:visited { + text-decoration:none; + color: black; +} + +.group .connection .bears { + display: none; +} + +.connection:hover { + background: #CDA; +} + +.connection .thumbnail { + margin: 0.5em; +} + +.connection .thumbnail img { + border: 1px solid black; + box-shadow: 1px 1px 5px black; + max-width: 75%; +} + +div.recent-connections .connection .thumbnail { + display: block; +} + +div.recent-connections .protocol { + display: none; +} + +.caption * { + vertical-align: middle; +} + +.caption .name { + margin-left: 0.25em; +} + diff --git a/guacamole/src/main/webapp/app/home/styles/home.css b/guacamole/src/main/webapp/app/home/styles/home.css index 359589b5e..26bcb7fae 100644 --- a/guacamole/src/main/webapp/app/home/styles/home.css +++ b/guacamole/src/main/webapp/app/home/styles/home.css @@ -20,18 +20,78 @@ * THE SOFTWARE. */ -.connection a, .group a { - text-decoration:none; - color: black; +div.connection-list-ui h1 { + + margin: 0; + padding: 0.5em; + + font-size: 2em; + vertical-align: middle; + text-align: center; + } -.connection a:hover, .group a:hover { - text-decoration:none; - color: black; +div.connection-list-ui h2 { + + padding: 0.5em; + margin: 0; + font-size: 1.5em; + + font-weight: lighter; + text-shadow: 1px 1px white; + + border-top: 1px solid #AAA; + border-bottom: 1px solid #AAA; + background: #DDD; + } -.connection a:visited, .group a:visited { - text-decoration:none; - color: black; +div.logout-panel { + padding: 0.45em; + text-align: right; + float: right; } +.history-unavailable div.recent-connections { + display: none; +} + +div.recent-connections, +div.clipboardDiv, +div.settings, +div.all-connections { + margin: 1em; + padding: 0; +} + +.all-connections .list-buttons { + text-align: center; + padding: 0; +} + +div.recent-connections { + text-align: center; +} + +.no-recent { + + color: black; + text-shadow: 1px 1px white; + opacity: 0.5; + + font-size: 2em; + font-weight: bolder; +} + +div.recent-connections div.connection { + -moz-border-radius: 0.5em; + -webkit-border-radius: 0.5em; + -khtml-border-radius: 0.5em; + border-radius: 0.5em; + display: inline-block; + padding: 1em; + margin: 1em; + text-align: center; + max-width: 75%; + overflow: hidden; +} diff --git a/guacamole/src/main/webapp/app/index/styles/buttons.css b/guacamole/src/main/webapp/app/index/styles/buttons.css new file mode 100644 index 000000000..9e61b9a5b --- /dev/null +++ b/guacamole/src/main/webapp/app/index/styles/buttons.css @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2013 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +input[type="submit"], button, a.button { + + -webkit-appearance: none; + text-decoration: none; + + background-color: #3C3C3C; + + border: 1px solid rgba(0, 0, 0, 0.4); + -moz-border-radius: 0.25em; + -webkit-border-radius: 0.25em; + -khtml-border-radius: 0.25em; + border-radius: 0.25em; + + color: white; + text-shadow: -1px -1px rgba(0, 0, 0, 0.3); + font-size: 1em; + + box-shadow: inset -1px -1px 0.1em rgba(0, 0, 0, 0.25), + inset 1px 1px 0.1em rgba(255, 255, 255, 0.25), + -1px -1px 0.1em rgba(0, 0, 0, 0.25), + 1px 1px 0.1em rgba(255, 255, 255, 0.25); + + padding: 0.35em; + padding-right: 1em; + padding-left: 1em; + min-width: 5em; + margin: 0.25em; + +} + +input[type="submit"]:hover, button:hover, a.button:hover { + background-color: #5A5A5A; +} + +input[type="submit"]:active, button:active, a.button:active { + + background-color: #2C2C2C; + + box-shadow: + inset 1px 1px 0.25em rgba(0, 0, 0, 0.25), + -1px -1px 0.25em rgba(0, 0, 0, 0.25), + 1px 1px 0.25em rgba(255, 255, 255, 0.25); +} + +button.danger, a.button.danger { + background: #A43; +} + +button.danger:hover, a.button.danger:hover { + background: #C54; +} + +button.danger:active, a.button.danger:active { + background: #932; +} + +a.button { + display: inline-block; +} + +.button.logout, .button.manage, .button.back { + background-repeat: no-repeat; + background-size: 1em; + background-position: 0.5em 0.45em; + padding-left: 1.8em; +} + +.button.logout { + background-image: url('images/action-icons/guac-logout.png'); +} + +.button.manage { + background-image: url('images/action-icons/guac-config.png'); +} + +.button.back { + background-image: url('images/action-icons/guac-back.png'); +} diff --git a/guacamole/src/main/webapp/app/index/styles/dialog.css b/guacamole/src/main/webapp/app/index/styles/dialog.css new file mode 100644 index 000000000..e514eaf5b --- /dev/null +++ b/guacamole/src/main/webapp/app/index/styles/dialog.css @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2013 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +.dialog-container { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0.5); + padding: 1em; +} + +.dialog-outer { + display: table; + height: 100%; + width: 100%; + position: fixed; + left: 0; + top: 0; + background: rgba(0, 0, 0, 0.5); +} + +.dialog-middle { + width: 100%; + text-align: center; + display: table-cell; + vertical-align: middle; +} + +.dialog.edit { + max-height: 100%; +} + +.dialog { + + max-width: 100%; + width: 8in; + margin-left: auto; + margin-right: auto; + overflow: auto; + + border: 1px solid rgba(0, 0, 0, 0.5); + background: #E7E7E7; + + -moz-border-radius: 0.2em; + -webkit-border-radius: 0.2em; + -khtml-border-radius: 0.2em; + border-radius: 0.2em; + + box-shadow: 0.1em 0.1em 0.2em rgba(0, 0, 0, 0.6); + +} + +.dialog > * { + margin: 1em; +} + +.dialog .header { + margin: 0; +} + +.dialog td { + position: relative; +} + +.dialog .overlay { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 1; +} + +.dialog .dropdown { + + position: absolute; + z-index: 2; + margin-top: -1px; + + width: 3in; + max-height: 2in; + overflow: auto; + + border: 1px solid rgba(0, 0, 0, 0.5); + background: white; + + font-size: 10pt; + +} + +.dialog .footer { + text-align: center; +} diff --git a/guacamole/src/main/webapp/app/index/styles/input.css b/guacamole/src/main/webapp/app/index/styles/input.css new file mode 100644 index 000000000..4a27f50a9 --- /dev/null +++ b/guacamole/src/main/webapp/app/index/styles/input.css @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2013 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +input[type=checkbox], input[type=number], input[type=text], input[type=radio], label, textarea { + -webkit-tap-highlight-color: rgba(128,192,128,0.5); +} + +div.location, input[type=text], input[type=number], input[type=password], textarea { + border: 1px solid #777; + -moz-border-radius: 0.2em; + -webkit-border-radius: 0.2em; + -khtml-border-radius: 0.2em; + border-radius: 0.2em; + width: 100%; + max-width: 16em; + padding: 0.25em; + font-size: 10pt; + background: white; + cursor: text; +} + +textarea { + max-width: none; + width: 30em; + height: 10em; + white-space: nowrap; + overflow: auto; +} + +input[type="submit"], button, a.button { + + -webkit-appearance: none; + text-decoration: none; + + background-color: #3C3C3C; + + border: 1px solid rgba(0, 0, 0, 0.4); + -moz-border-radius: 0.25em; + -webkit-border-radius: 0.25em; + -khtml-border-radius: 0.25em; + border-radius: 0.25em; + + color: white; + text-shadow: -1px -1px rgba(0, 0, 0, 0.3); + font-size: 1em; + + box-shadow: inset -1px -1px 0.1em rgba(0, 0, 0, 0.25), + inset 1px 1px 0.1em rgba(255, 255, 255, 0.25), + -1px -1px 0.1em rgba(0, 0, 0, 0.25), + 1px 1px 0.1em rgba(255, 255, 255, 0.25); + + padding: 0.35em; + padding-right: 1em; + padding-left: 1em; + min-width: 5em; + margin: 0.25em; + +} + +input[type="submit"]:hover, button:hover, a.button:hover { + background-color: #5A5A5A; +} + +input[type="submit"]:active, button:active, a.button:active { + + background-color: #2C2C2C; + + box-shadow: + inset 1px 1px 0.25em rgba(0, 0, 0, 0.25), + -1px -1px 0.25em rgba(0, 0, 0, 0.25), + 1px 1px 0.25em rgba(255, 255, 255, 0.25); +} + +button.danger, a.button.danger { + background: #A43; +} + +button.danger:hover, a.button.danger:hover { + background: #C54; +} + +button.danger:active, a.button.danger:active { + background: #932; +} + +a.button { + display: inline-block; +} + +.button.logout, .button.manage, .button.back { + background-repeat: no-repeat; + background-size: 1em; + background-position: 0.5em 0.45em; + padding-left: 1.8em; +} + +.button.logout { + background-image: url('images/action-icons/guac-logout.png'); +} + +.button.manage { + background-image: url('images/action-icons/guac-config.png'); +} + +.button.back { + background-image: url('images/action-icons/guac-back.png'); +} diff --git a/guacamole/src/main/webapp/app/index/styles/ui.css b/guacamole/src/main/webapp/app/index/styles/ui.css index 2acc37821..efcdcdaeb 100644 --- a/guacamole/src/main/webapp/app/index/styles/ui.css +++ b/guacamole/src/main/webapp/app/index/styles/ui.css @@ -20,8 +20,6 @@ * THE SOFTWARE. */ -@import url('animation.css'); - * { -webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-box-sizing: border-box; @@ -29,92 +27,6 @@ box-sizing: border-box; } -input[type=checkbox], input[type=number], input[type=text], input[type=radio], label, textarea { - -webkit-tap-highlight-color: rgba(128,192,128,0.5); -} - -div.location, input[type=text], input[type=number], input[type=password], textarea { - border: 1px solid #777; - -moz-border-radius: 0.2em; - -webkit-border-radius: 0.2em; - -khtml-border-radius: 0.2em; - border-radius: 0.2em; - width: 100%; - max-width: 16em; - padding: 0.25em; - font-size: 10pt; - background: white; - cursor: text; -} - -textarea { - max-width: none; - width: 30em; - height: 10em; - white-space: nowrap; - overflow: auto; -} - -input[type="submit"], button, a.button { - - -webkit-appearance: none; - text-decoration: none; - - background-color: #3C3C3C; - - border: 1px solid rgba(0, 0, 0, 0.4); - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; - - color: white; - text-shadow: -1px -1px rgba(0, 0, 0, 0.3); - font-size: 1em; - - box-shadow: inset -1px -1px 0.1em rgba(0, 0, 0, 0.25), - inset 1px 1px 0.1em rgba(255, 255, 255, 0.25), - -1px -1px 0.1em rgba(0, 0, 0, 0.25), - 1px 1px 0.1em rgba(255, 255, 255, 0.25); - - padding: 0.35em; - padding-right: 1em; - padding-left: 1em; - min-width: 5em; - margin: 0.25em; - -} - -input[type="submit"]:hover, button:hover, a.button:hover { - background-color: #5A5A5A; -} - -input[type="submit"]:active, button:active, a.button:active { - - background-color: #2C2C2C; - - box-shadow: - inset 1px 1px 0.25em rgba(0, 0, 0, 0.25), - -1px -1px 0.25em rgba(0, 0, 0, 0.25), - 1px 1px 0.25em rgba(255, 255, 255, 0.25); -} - -button.danger, a.button.danger { - background: #A43; -} - -button.danger:hover, a.button.danger:hover { - background: #C54; -} - -button.danger:active, a.button.danger:active { - background: #932; -} - -a.button { - display: inline-block; -} - body { background: #EEE; font-family: FreeSans, Helvetica, Arial, sans-serif; @@ -158,103 +70,6 @@ div.section { padding: 1em; } -/* - * Dialogs - */ - -.dialog-container { - position: fixed; - top: 0; - left: 0; - bottom: 0; - right: 0; - background: rgba(0, 0, 0, 0.5); - padding: 1em; -} - -.dialog-outer { - display: table; - height: 100%; - width: 100%; - position: fixed; - left: 0; - top: 0; - background: rgba(0, 0, 0, 0.5); -} - -.dialog-middle { - width: 100%; - text-align: center; - display: table-cell; - vertical-align: middle; -} - -.dialog.edit { - max-height: 100%; -} - -.dialog { - - max-width: 100%; - width: 8in; - margin-left: auto; - margin-right: auto; - overflow: auto; - - border: 1px solid rgba(0, 0, 0, 0.5); - background: #E7E7E7; - - -moz-border-radius: 0.2em; - -webkit-border-radius: 0.2em; - -khtml-border-radius: 0.2em; - border-radius: 0.2em; - - box-shadow: 0.1em 0.1em 0.2em rgba(0, 0, 0, 0.6); - -} - -.dialog > * { - margin: 1em; -} - -.dialog .header { - margin: 0; -} - -.dialog td { - position: relative; -} - -.dialog .overlay { - position: fixed; - top: 0; - left: 0; - bottom: 0; - right: 0; - z-index: 1; -} - -.dialog .dropdown { - - position: absolute; - z-index: 2; - margin-top: -1px; - - width: 3in; - max-height: 2in; - overflow: auto; - - border: 1px solid rgba(0, 0, 0, 0.5); - background: white; - - font-size: 10pt; - -} - -.dialog .footer { - text-align: center; -} - /* * List elements */ @@ -351,29 +166,6 @@ div.section { * List element fields (editing) */ -/* -.form { - - position: absolute; - display: inline-block; - vertical-align: middle; - z-index: 1; - - border: 1px solid rgba(0, 0, 0, 0.5); - background: #E7E7E7; - padding: 0; - margin: 0.25em; - - -moz-border-radius: 0.2em; - -webkit-border-radius: 0.2em; - -khtml-border-radius: 0.2em; - border-radius: 0.2em; - - box-shadow: 0.1em 0.1em 0.2em rgba(0, 0, 0, 0.6); - -} -*/ - .form .fields th, .form .permissions th { font-weight: normal; diff --git a/guacamole/src/main/webapp/app/login/styles/animation.css b/guacamole/src/main/webapp/app/login/styles/animation.css new file mode 100644 index 000000000..bbc842c9a --- /dev/null +++ b/guacamole/src/main/webapp/app/login/styles/animation.css @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2014 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +@keyframes shake-head { + 0% { margin-left: 0.25em; margin-right: -0.25em; } + 25% { margin-left: -0.25em; margin-right: 0.25em; } + 50% { margin-left: 0.25em; margin-right: -0.25em; } + 75% { margin-left: -0.25em; margin-right: 0.25em; } + 100% { margin-left: 0.00em; margin-right: 0.00em; } +} + +@-webkit-keyframes shake-head { + 0% { margin-left: 0.25em; margin-right: -0.25em; } + 25% { margin-left: -0.25em; margin-right: 0.25em; } + 50% { margin-left: 0.25em; margin-right: -0.25em; } + 75% { margin-left: -0.25em; margin-right: 0.25em; } + 100% { margin-left: 0.00em; margin-right: 0.00em; } +} diff --git a/guacamole/src/main/webapp/app/login/styles/dialog.css b/guacamole/src/main/webapp/app/login/styles/dialog.css new file mode 100644 index 000000000..72f1ad7c7 --- /dev/null +++ b/guacamole/src/main/webapp/app/login/styles/dialog.css @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2014 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +.error .login-form { + animation-name: shake-head; + animation-duration: 0.25s; + animation-timing-function: linear; + -webkit-animation-name: shake-head; + -webkit-animation-duration: 0.25s; + -webkit-animation-timing-function: linear; +} + +div.login-dialog-middle { + width: 100%; + display: table-cell; + vertical-align: middle; + text-align: center; +} + +div.login-dialog { + + max-width: 75%; + text-align: left; + + display: inline-block; +} + +div.login-dialog h1 { + margin-top: 0; + margin-bottom: 0em; + text-align: center; +} + +div.login-dialog .buttons { + padding-top: 0.5em; + text-align: right; + margin: 0; +} + +div.login-dialog .login-fields { + + vertical-align: middle; + + padding: 1em; + border-top: 1px solid #999; + border-bottom: 1px solid #999; + +} + +div.login-dialog th { + text-shadow: 1px 1px white; +} + +div.login-dialog .login-fields img.logo { + position: fixed; + margin: 10px; + left: 0; + bottom: 0; + opacity: 0.1; + z-index: -1; +} + +div.version { + text-align: center; + font-style: italic; + font-size: 0.75em; + color: black; + opacity: 0.5; + + padding: 0.5em; +} diff --git a/guacamole/src/main/webapp/app/login/styles/input.css b/guacamole/src/main/webapp/app/login/styles/input.css new file mode 100644 index 000000000..479737663 --- /dev/null +++ b/guacamole/src/main/webapp/app/login/styles/input.css @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2014 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +input[type="submit"].login, +button.login { + + background-image: url('images/guacamole-logo-64.png'); + background-repeat: no-repeat; + background-size: 1.5em; + background-position: 0.5em 0.25em; + + padding-left: 2.5em; + +} + +div.login-dialog .login-fields input { + border: 1px solid #777; + -moz-border-radius: 0.2em; + -webkit-border-radius: 0.2em; + -khtml-border-radius: 0.2em; + border-radius: 0.2em; + width: 100%; +} diff --git a/guacamole/src/main/webapp/app/login/styles/login.css b/guacamole/src/main/webapp/app/login/styles/login.css index 3f2556d8b..87f636095 100644 --- a/guacamole/src/main/webapp/app/login/styles/login.css +++ b/guacamole/src/main/webapp/app/login/styles/login.css @@ -20,25 +20,6 @@ * THE SOFTWARE. */ -* { - -webkit-tap-highlight-color: rgba(0,0,0,0); -} - -input[type=checkbox], input[type=text], textarea { - -webkit-tap-highlight-color: rgba(128,192,128,0.5); -} - -input[type=submit], button { - -webkit-appearance: none; -} - -body { - background: #EEE; - font-family: FreeSans, Helvetica, Arial, sans-serif; - padding: 0; - margin: 0; -} - div.login-ui { height: 100%; width: 100%; @@ -48,22 +29,6 @@ div.login-ui { display: table; } -@keyframes shake-head { - 0% { margin-left: 0.25em; margin-right: -0.25em; } - 25% { margin-left: -0.25em; margin-right: 0.25em; } - 50% { margin-left: 0.25em; margin-right: -0.25em; } - 75% { margin-left: -0.25em; margin-right: 0.25em; } - 100% { margin-left: 0.00em; margin-right: 0.00em; } -} - -@-webkit-keyframes shake-head { - 0% { margin-left: 0.25em; margin-right: -0.25em; } - 25% { margin-left: -0.25em; margin-right: 0.25em; } - 50% { margin-left: 0.25em; margin-right: -0.25em; } - 75% { margin-left: -0.25em; margin-right: 0.25em; } - 100% { margin-left: 0.00em; margin-right: 0.00em; } -} - p.login-error { display: none; } @@ -87,248 +52,3 @@ p.login-error { text-align: center; color: #964040; } - -.error .login-form { - animation-name: shake-head; - animation-duration: 0.25s; - animation-timing-function: linear; - -webkit-animation-name: shake-head; - -webkit-animation-duration: 0.25s; - -webkit-animation-timing-function: linear; -} - -div.login-logo { - position: relative; - bottom: 0; - display: inline-block; - vertical-align: middle; -} - -div.login-dialog-middle { - width: 100%; - display: table-cell; - vertical-align: middle; - text-align: center; -} - -div.login-dialog { - - max-width: 75%; - text-align: left; - - display: inline-block; -} - -div.login-dialog h1 { - margin-top: 0; - margin-bottom: 0em; - text-align: center; -} - -div.login-dialog .buttons { - padding-top: 0.5em; - text-align: right; - margin: 0; -} - -input[type="submit"].login, button.login { - - background-image: url('images/guacamole-logo-64.png'); - background-repeat: no-repeat; - background-size: 1.5em; - background-position: 0.5em 0.25em; - - padding-left: 2.5em; - -} - -div.login-dialog .login-fields { - - vertical-align: middle; - - padding: 1em; - border-top: 1px solid #999; - border-bottom: 1px solid #999; - -} - -div.login-dialog th { - text-shadow: 1px 1px white; -} - -div.login-dialog .login-fields input { - border: 1px solid #777; - -moz-border-radius: 0.2em; - -webkit-border-radius: 0.2em; - -khtml-border-radius: 0.2em; - border-radius: 0.2em; - width: 100%; -} - -div.login-dialog .login-fields img.logo { - position: fixed; - margin: 10px; - left: 0; - bottom: 0; - opacity: 0.1; - z-index: -1; -} - -div.version { - text-align: center; - font-style: italic; - font-size: 0.75em; - color: black; - opacity: 0.5; - - padding: 0.5em; -} - -img { - border: none; -} - -img.license { - float: right; - margin: 2px; -} - -div.connection-list-ui h1 { - - margin: 0; - padding: 0.5em; - - font-size: 2em; - vertical-align: middle; - text-align: center; - -} - -div.connection-list-ui h2 { - - padding: 0.5em; - margin: 0; - font-size: 1.5em; - - font-weight: lighter; - text-shadow: 1px 1px white; - - border-top: 1px solid #AAA; - border-bottom: 1px solid #AAA; - background: #DDD; - -} - -div.connection-list-ui img { - vertical-align: middle; -} - -div.logout-panel { - padding: 0.45em; - text-align: right; - float: right; -} - -.history-unavailable div.recent-connections { - display: none; -} - -div.recent-connections, -div.clipboardDiv, -div.settings, -div.all-connections { - margin: 1em; - padding: 0; -} - -.all-connections .list-buttons { - text-align: center; - padding: 0; -} - -div.recent-connections { - text-align: center; -} - -.no-recent { - - color: black; - text-shadow: 1px 1px white; - opacity: 0.5; - - font-size: 2em; - font-weight: bolder; -} - -div.recent-connections div.connection { - -moz-border-radius: 0.5em; - -webkit-border-radius: 0.5em; - -khtml-border-radius: 0.5em; - border-radius: 0.5em; - display: inline-block; - padding: 1em; - margin: 1em; - text-align: center; - max-width: 75%; - overflow: hidden; -} - -.group, -.connection { - cursor: pointer; -} - -.group .connection .bears { - display: none; -} - -.connection:hover { - background: #CDA; -} - -.connection .thumbnail { - margin: 0.5em; -} - -.connection .thumbnail img { - border: 1px solid black; - box-shadow: 1px 1px 5px black; - max-width: 75%; -} - -div.recent-connections .connection .thumbnail { - display: block; -} - -div.recent-connections .protocol { - display: none; -} - -.caption * { - vertical-align: middle; -} - -.caption .name { - margin-left: 0.25em; -} - -.clipboardDiv textarea { - width: 100%; - border: 1px solid #AAA; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; - white-space: pre; -} - -.settings dt { - border-bottom: 1px dotted #AAA; - padding-bottom: 0.25em; -} - -.settings dd { - margin: 1.5em; - margin-left: 2.5em; - font-size: 0.75em; -} \ No newline at end of file diff --git a/guacamole/src/main/webapp/app/manage/styles/manage.css b/guacamole/src/main/webapp/app/manage/styles/buttons.css similarity index 100% rename from guacamole/src/main/webapp/app/manage/styles/manage.css rename to guacamole/src/main/webapp/app/manage/styles/buttons.css