Przeglądaj źródła

ui redesign (Joscha)

Michael 10 lat temu
rodzic
commit
81c4f14ddc

+ 12 - 3
src/allplatforms/classes/ColorPickerWidget.js

@@ -88,26 +88,35 @@ SC.loadPackage({ 'ColorPickerWidget': {
                     var colorpickerInputContainer = document.createElement('div');
                         colorpickerInputContainer.classList.add('sg-colorpicker-input-container');
 
+                    var colorPickerInputRContainer = document.createElement('div');
+                        colorPickerInputRContainer.setAttribute('data-label', 'R:');
                     colorpickerInputR = document.createElement('input');
                         colorpickerInputR.setAttribute('type', 'number');
                         colorpickerInputR.addEventListener('change', function() {
                             updatePicker(ColorPicker.rgb2hex({ r: this.value, g: colorpickerInputG.value, b: colorpickerInputB.value }));
                         });
-                    colorpickerInputContainer.appendChild(colorpickerInputR);
+                    colorPickerInputRContainer.appendChild(colorpickerInputR);
+                    colorpickerInputContainer.appendChild(colorPickerInputRContainer);
 
+                    var colorPickerInputGContainer = document.createElement('div');
+                        colorPickerInputGContainer.setAttribute('data-label', 'G:');
                     colorpickerInputG = document.createElement('input');
                         colorpickerInputG.setAttribute('type', 'number');
                         colorpickerInputG.addEventListener('change', function() {
                             updatePicker(ColorPicker.rgb2hex({ r: colorpickerInputR.value, g: this.value, b: colorpickerInputB.value }));
                         });
-                    colorpickerInputContainer.appendChild(colorpickerInputG);
+                    colorPickerInputGContainer.appendChild(colorpickerInputG);
+                    colorpickerInputContainer.appendChild(colorPickerInputGContainer);
 
+                    var colorPickerInputBContainer = document.createElement('div');
+                        colorPickerInputBContainer.setAttribute('data-label', 'B:');
                     colorpickerInputB = document.createElement('input');
                         colorpickerInputB.setAttribute('type', 'number');
                         colorpickerInputB.addEventListener('change', function() {
                             updatePicker(ColorPicker.rgb2hex({ r: colorpickerInputR.value, g: colorpickerInputG.value, b: this.value }));
                         });
-                    colorpickerInputContainer.appendChild(colorpickerInputB);
+                    colorPickerInputBContainer.appendChild(colorpickerInputB);
+                    colorpickerInputContainer.appendChild(colorPickerInputBContainer);
 
                     colorpickerInputHex = document.createElement('input');
                         colorpickerInputHex.setAttribute('type', 'text');

+ 1 - 0
src/allplatforms/classes/Compiler.js

@@ -28,6 +28,7 @@ SC.loadPackage({ 'Compiler': {
                             +'\n\t\t\t#sg-page.sg-page-centered { margin: 0px auto; }'
                             +'\n\t\t\t.sg-element { position: absolute; overflow: hidden; }'
                             +'\n\t\t</style>'
+                            +'\n\t\t<link rel="stylesheet" href="/resources/css/SuperGlue.css" data-superglue="text-css">'
                             +'\n\t</head>';
                 
                 thePage += '\n\t<body style="'+ document.body.getAttribute('style')

+ 12 - 3
src/allplatforms/classes/MenuItemBackgroundColor.js

@@ -126,26 +126,35 @@ SC.loadPackage({ 'MenuItemBackgroundColor': {
                     var colorpickerInputContainer = document.createElement('div');
                         colorpickerInputContainer.classList.add('sg-colorpicker-input-container');
 
+                    var colorPickerInputRContainer = document.createElement('div');
+                        colorPickerInputRContainer.setAttribute('data-label', 'R:');
                     colorpickerInputR = document.createElement('input');
                         colorpickerInputR.setAttribute('type', 'number');
                         colorpickerInputR.addEventListener('change', function() {
                             updatePicker(ColorPicker.rgb2hex({ r: this.value, g: colorpickerInputG.value, b: colorpickerInputB.value }));
                         });
-                    colorpickerInputContainer.appendChild(colorpickerInputR);
+                    colorPickerInputRContainer.appendChild(colorpickerInputR);
+                    colorpickerInputContainer.appendChild(colorPickerInputRContainer);
 
+                    var colorPickerInputGContainer = document.createElement('div');
+                        colorPickerInputGContainer.setAttribute('data-label', 'G:');
                     colorpickerInputG = document.createElement('input');
                         colorpickerInputG.setAttribute('type', 'number');
                         colorpickerInputG.addEventListener('change', function() {
                             updatePicker(ColorPicker.rgb2hex({ r: colorpickerInputR.value, g: this.value, b: colorpickerInputB.value }));
                         });
-                    colorpickerInputContainer.appendChild(colorpickerInputG);
+                    colorPickerInputGContainer.appendChild(colorpickerInputG);
+                    colorpickerInputContainer.appendChild(colorPickerInputGContainer);
 
+                    var colorPickerInputBContainer = document.createElement('div');
+                        colorPickerInputBContainer.setAttribute('data-label', 'B:');
                     colorpickerInputB = document.createElement('input');
                         colorpickerInputB.setAttribute('type', 'number');
                         colorpickerInputB.addEventListener('change', function() {
                             updatePicker(ColorPicker.rgb2hex({ r: colorpickerInputR.value, g: colorpickerInputG.value, b: this.value }));
                         });
-                    colorpickerInputContainer.appendChild(colorpickerInputB);
+                    colorPickerInputBContainer.appendChild(colorpickerInputB);
+                    colorpickerInputContainer.appendChild(colorPickerInputBContainer);
 
                     colorpickerInputHex = document.createElement('input');
                         colorpickerInputHex.setAttribute('type', 'text');

+ 1 - 1
src/allplatforms/classes/SliderWidget.js

@@ -63,7 +63,7 @@ SC.loadPackage({ 'SliderWidget': {
                 
 
                 var startY,
-                    maxY = 110,
+                    maxY = 100,
                     clickOffset,
                     currentY,
 

+ 222 - 24
src/allplatforms/classes/TextEditor.js

@@ -7,11 +7,11 @@ SC.loadPackage({ 'TextEditor': {
         editGroupFontFamily:    { initValue: '<a class="btn dropdown-toggle" title="Font"><i class="icon-font"></i><b class="caret"></b></a><ul class="dropdown-menu"></ul>' },
         editGroupFontSize:      { initValue: '<a class="btn dropdown-toggle" title="Font Size"><i class="icon-text-height"></i>&nbsp;<b class="caret"></b></a><ul class="dropdown-menu small"></ul>' },
         editGroupFontStyle:     { initValue: '<a class="btn" data-wysihtml5-command="bold" title="Bold"><i class="icon-bold"></i></a><a class="btn" data-wysihtml5-command="italic" title="Italic"><i class="icon-italic"></i></a><a class="btn" data-wysihtml5-command="underline" title="Underline"><i class="icon-underline"></i></a>' },
-        editGroupFontColor:     { initValue: '<a class="btn dropdown-toggle right" title="Font Color"><i class="icon-color">&nbsp;<b class="caretRight"></i></a><div class="colorpicker2"></div>' },
+        editGroupFontColor:     { initValue: '<a class="btn dropdown-toggle right" title="Font Color"><i class="icon-color">&nbsp;<b class="caret"></i></a><div class="sg-colorpicker-container-text"><div class="sg-colorpicker-container"></div></div>' },
         editGroupLists:         { initValue: '<a class="btn" data-wysihtml5-command="insertUnorderedList" title="Bullet list"><i class="icon-list-ul"></i></a><a class="btn" data-wysihtml5-command="insertOrderedList" title="Number list"><i class="icon-list-ol"></i></a>' },
         editGroupIndention:     { initValue: '<a class="btn" data-wysihtml5-command="outdent" title="Reduce indent"><i class="icon-indent-right"></i></a><a class="btn" data-wysihtml5-command="indent" title="Indent"><i class="icon-indent-left"></i></a>' },
         editGroupAlignment:     { initValue: '<a class="btn" data-wysihtml5-command="alignLeftStyle" title="Align Left"><i class="icon-align-left"></i></a><a class="btn" data-wysihtml5-command="alignCenterStyle" title="Center"><i class="icon-align-center"></i></a><a class="btn" data-wysihtml5-command="alignRightStyle" title="Align Right"><i class="icon-align-right"></i></a><a class="btn" data-wysihtml5-command="alignJustifyStyle" title="Justify"><i class="icon-align-justify"></i></a>' },
-        editGroupHyperlink:     { initValue: '<a class="btn dropdown-toggle hyperlink" title="Hyperlink" data-wysihtml5-command="createLink"><i class="icon-link"></i>&nbsp;<b class="caret"></b></a><div class="dropdown-menu input-append" data-wysihtml5-dialog="createLink" style="display: none;"><label>Link:<input data-wysihtml5-dialog-field="href" value="http://" class="text"></label><a data-wysihtml5-dialog-action="save">OK</a> <a data-wysihtml5-dialog-action="cancel">Cancel</a> <a data-wysihtml5-command="removeLink">Remove</a></div>' },
+        editGroupHyperlink:     { initValue: '<a class="btn dropdown-toggle hyperlink" title="Hyperlink" data-wysihtml5-command="createLink"><i class="icon-link"></i>&nbsp;<b class="caret"></b></a><div class="dropdown-menu input-append" data-wysihtml5-dialog="createLink" style="display: none;"><input data-wysihtml5-dialog-field="href" value="http://" class="text"><a data-wysihtml5-dialog-action="save">OK</a><a data-wysihtml5-command="removeLink">RM</a></div>' },
         activeEditGroups:       { initValue: ['editGroupIndention', 'editGroupAlignment', 'editGroupFontSize', 'editGroupFontFamily', 'editGroupFontColor', 'editGroupHyperlink', 'editGroupFontStyle', 'editGroupLists'] },
         activeFonts:            { initValue: ['Serif', 'Sans', 'Arial', 'Arial Black', 'Courier', 'Courier New', 'Comic Sans MS','Dosis', 'Helvetica', 'Impact', 'Lucida Grande', 'Lucida Sans', 'Montserrat', 'Tahoma', 'Times', 'Times New Roman', 'TitilliumWeb', 'Verdana'] },
         activeFontSizes:        { initValue: ['8px', '9px', '10px', '11px', '12px', '13px', '14px', '15px', '16px', '17px', '18px', '20px', '22px', '26px', '28px', '30px', '32px', '34px', '36px', '38px', '40px', '46px', '50px', '60px', '70px'] }
@@ -24,7 +24,9 @@ SC.loadPackage({ 'TextEditor': {
         originalElementNode:    { comment: 'I store the original TextElement\'s DOM node.' },
         originalSelection:      { comment: 'I store the selection to restore it on unloading of the editor.' },
         textEditor:             { comment: 'I store the TextEditor\'s DOM node.' },
-        textEditorContainer:    { comment: 'I store the textEditorContainer\'s DOM node.' }
+        textEditorContainer:    { comment: 'I store the textEditorContainer\'s DOM node.' },
+        textEditorToolbar:      { comment: 'I store the textEditorToolbar\'s DOM node.' },
+        colorpicker:            { comment: 'I store a reference to my colorpicker' }
 
     },
 
@@ -69,6 +71,7 @@ SC.loadPackage({ 'TextEditor': {
                 textEditor.style.backgroundImage    = originalElementNode.style.backgroundImage;
                 textEditor.style.padding            = originalElementNode.style.padding;
                 textEditor.style.boxSizing          = 'border-box';
+                textEditor.style.borderStyle        = 'solid';
 
                 textEditor.style.position   = 'absolute';
                 textEditor.style.width      = this.get('originalElementNode').offsetWidth + 'px';
@@ -163,6 +166,8 @@ SC.loadPackage({ 'TextEditor': {
 
                 this.get('textEditorContainer').appendChild(textShapeToolbar);
 
+                this.set({ textEditorToolbar: textShapeToolbar });
+
                 this.do('initToolbarBindings');
 
                 textEditor.style.display = 'none';
@@ -175,11 +180,20 @@ SC.loadPackage({ 'TextEditor': {
                   useLineBreaks: false,
                   parserRules:  wysihtml5ParserRules, // defined in parser rules set
                   cleanUp:      true, 
-                  stylesheets:  ["../resources/default/css/normalize.css", "../resources/default/css/style.css"]
+                  stylesheets:  ["../resources/css/SuperGlue.css"]
                 }).on('load', function() {
                     
                     document.querySelector('.wysihtml5-sandbox').classList.add('shapeContent');
                     editor.focus();
+
+                    self.do('initColorpicker', {
+
+                        initialColor: undefined,
+                        setCallback: function(colorCode){
+                            editor.composer.commands.exec('fontColorStyle', colorCode );
+                        }
+
+                    });
                     
                 }).on('blur', function() {
                     
@@ -211,7 +225,7 @@ SC.loadPackage({ 'TextEditor': {
                         sandbox.style.display = 'block';
                     
                 });
-                /*                        
+                              
                 self.get('textEditor').addEventListener('click', function(evt){
 
                     if (editor) {
@@ -221,7 +235,7 @@ SC.loadPackage({ 'TextEditor': {
                     evt.stopPropagation();
                     return;
                 });
-                */
+                
 
                 var self = this;
                 var tmpTextColor;
@@ -242,6 +256,7 @@ SC.loadPackage({ 'TextEditor': {
                                 
                                 var currentFontColor = undefined;
 
+                                /*
                                 var sel = editor.composer.selection.getSelection();
                                 if (sel.rangeCount > 0) {
                                     var range = sel.getRangeAt(0);
@@ -253,9 +268,16 @@ SC.loadPackage({ 'TextEditor': {
                                         currentFontColor = parentElement.style.color;
                                     }
                                 }
+                                */
 
-                                // TODO: INIT COLORPICKER
-                                //self.do('initPicker', { initColor: currentFontColor });
+                                self.do('initColorpicker', {
+
+                                    initialColor: currentFontColor,
+                                    setCallback: function(colorCode){
+                                        editor.composer.commands.exec('fontColorStyle', colorCode );
+                                    }
+
+                                });
                                 
                             }
 
@@ -373,17 +395,8 @@ SC.loadPackage({ 'TextEditor': {
                 
                 for (var d=0; d<dropdownMenus.length; d++) {
                     dropdownMenus[d].addEventListener('click', function() {
-
-                        /*
-                        var dropdownClass;
-                        if ( this.nextElementSibling && this.nextElementSibling.classList.contains('colorpicker2') ) {
-                            dropdownClass = 'colorpicker2';
-                        } else {
-                            dropdownClass = 'dropdown-menu';
-                        }
-                        */
                         
-                        var dropdownClass = 'dropdown-menu'
+                        var dropdownClass = 'dropdown-menu';
 
                         if ( this.classList.contains('open') ) {
                             this.nextElementSibling.classList.remove('active');
@@ -394,6 +407,8 @@ SC.loadPackage({ 'TextEditor': {
                             for (var i=0; i<dropdownMenuContainers.length; i++) {
                                 dropdownMenuContainers[i].classList.remove('active')
                             }
+
+                            document.querySelector('.sg-colorpicker-container-text').classList.remove('active');
                             
                             this.nextElementSibling.classList.add('active');
                             
@@ -421,16 +436,199 @@ SC.loadPackage({ 'TextEditor': {
             }
         },
 
-        initPicker: {
-            comment: 'I init my colorpicker. Params: initColor',
-            code: function(){
+        initColorpicker: { 
+            comment:    'I init my colorpicker. Params: initialColor, setCallback()',
+            code:       function(colorPickerConfig){
+
+                var self = this;
+                
+                // From flexicolorPicker
+
+                var colorpickerContainer = this.get('textEditorToolbar').querySelector('.sg-colorpicker-container');
+                var colorpicker;
+
+                // Inputs
+
+                var colorpickerInputR,
+                    colorpickerInputB,
+                    colorpickerInputB,
+                    colorpickerInputHex;
+
+                var start = function() {
+                    
+                    var colorpickerElement = document.createElement('div');
+                    colorpickerElement.classList.add('sg-colorpicker');
+                    colorpickerContainer.appendChild(colorpickerElement);
+
+                    var colorpickerInputContainer = document.createElement('div');
+                        colorpickerInputContainer.classList.add('sg-colorpicker-input-container');
+
+                    var colorPickerInputRContainer = document.createElement('div');
+                        colorPickerInputRContainer.setAttribute('data-label', 'R:');
+                    colorpickerInputR = document.createElement('input');
+                        colorpickerInputR.setAttribute('type', 'number');
+                        colorpickerInputR.addEventListener('change', function() {
+                            updatePicker(ColorPicker.rgb2hex({ r: this.value, g: colorpickerInputG.value, b: colorpickerInputB.value }));
+                        });
+                    colorPickerInputRContainer.appendChild(colorpickerInputR);
+                    colorpickerInputContainer.appendChild(colorPickerInputRContainer);
+
+                    var colorPickerInputGContainer = document.createElement('div');
+                        colorPickerInputGContainer.setAttribute('data-label', 'G:');
+                    colorpickerInputG = document.createElement('input');
+                        colorpickerInputG.setAttribute('type', 'number');
+                        colorpickerInputG.addEventListener('change', function() {
+                            updatePicker(ColorPicker.rgb2hex({ r: colorpickerInputR.value, g: this.value, b: colorpickerInputB.value }));
+                        });
+                    colorPickerInputGContainer.appendChild(colorpickerInputG);
+                    colorpickerInputContainer.appendChild(colorPickerInputGContainer);
+
+                    var colorPickerInputBContainer = document.createElement('div');
+                        colorPickerInputBContainer.setAttribute('data-label', 'B:');
+                    colorpickerInputB = document.createElement('input');
+                        colorpickerInputB.setAttribute('type', 'number');
+                        colorpickerInputB.addEventListener('change', function() {
+                            updatePicker(ColorPicker.rgb2hex({ r: colorpickerInputR.value, g: colorpickerInputG.value, b: this.value }));
+                        });
+                    colorPickerInputBContainer.appendChild(colorpickerInputB);
+                    colorpickerInputContainer.appendChild(colorPickerInputBContainer);
+
+                    colorpickerInputHex = document.createElement('input');
+                        colorpickerInputHex.setAttribute('type', 'text');
+                        colorpickerInputHex.addEventListener('change', function() {
+                            updatePicker(this.value);
+                        });
+                    colorpickerInputContainer.appendChild(colorpickerInputHex);
+
+                    colorpickerContainer.appendChild(colorpickerInputContainer);
+
+
+                    colorpicker = ColorPicker(colorpickerElement, updateColor);
+                    self.set({ colorpicker: colorpicker });
+
+                    //updatePicker(initialColor);
+
+                    var topColors = getMostUsedColors();
+                    var topColorsContainer = document.createElement('div');
+                        topColorsContainer.classList.add('sg-colorpicker-top-colors');
+
+                    for (var i=0; i<topColors.length; i++) {
+                        var topColorElement = document.createElement('span');
+                            topColorElement.style.backgroundColor = topColors[i].color;
+                            topColorElement.addEventListener('mousedown', function() {
+                                updatePicker(rgbString2Hex(this.style.backgroundColor));
+                            });
+                        topColorsContainer.appendChild(topColorElement);
+                    }
+
+                    colorpickerContainer.appendChild(topColorsContainer);
+
+                    var transparentElement = document.createElement('div');
+                        transparentElement.classList.add('sg-colorpicker-transparent');
+                        transparentElement.addEventListener('mousedown', function() {
+                            colorPickerConfig.setCallback.call(this, '');
+                        });
+                    colorpickerContainer.appendChild(transparentElement);
+                    
+                }
+
+
+                var updateColor = function(hex) {
+                    
+                    if ( hex ) {
+                        var rgb = ColorPicker.hex2rgb(hex);
 
-                // TODO: INIT COLORPICKER HERE
-                // with arg.initColor
+                        colorpickerInputHex.value = hex;
+                        
+                        colorpickerInputR.value = rgb.r;
+                        colorpickerInputG.value = rgb.g;
+                        colorpickerInputB.value = rgb.b;
+                        
+                        
+                        colorPickerConfig.setCallback.call(this, 'rgb('+rgb.r+', '+rgb.g+', '+rgb.b+')');
+                    }
+
+                }
+                
+
+                var updatePicker = function(hex) {
+                    
+                    self.get('colorpicker').setHex(hex);
+                }
+
+                var rgbString2Hex = function(rgbString) {
+                     if(rgbString === ''){
+                        return '';
+                     }
+                     if (  rgbString.search("rgb") == -1 ) {
+                          return rgbString;
+                     } else {
+                          rgbString = rgbString.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/);
+                          function hex(x) {
+                               return ("0" + parseInt(x).toString(16)).slice(-2);
+                          }
+                          return "#" + hex(rgbString[1]) + hex(rgbString[2]) + hex(rgbString[3]); 
+                     }
+                };
+
+                var getMostUsedColors = function() {
+                    
+                    var elements = SuperGlue.get('document').get('children');
+                    var colorArray = [];
+
+                    for (var i=0; i<elements.length; i++) {
+                        if ( elements[i].get('node').style.backgroundColor.length ) {
+                            colorArray.push(elements[i].get('node').style.backgroundColor);
+                        }
+                        if ( elements[i].get('node').style.borderColor.length ) {
+                            colorArray.push(elements[i].get('node').style.borderColor);
+                        }
+                    }
 
+                    var frequencyObject = {};
+                    for( var v in colorArray ) {
+                        frequencyObject[colorArray[v]]=(frequencyObject[colorArray[v]] || 0)+1;
+                    }
+
+                    var frequencyArray = [];
+                    for ( var f in frequencyObject ) {
+                        var newObj = {};
+                        newObj["color"] = f;
+                        newObj["count"] = frequencyObject[f]
+                        frequencyArray.push(newObj);
+                    }
+
+                    function compare(a,b) {
+                        if (a.count < b.count)
+                            return 1;
+                        if (a.count > b.count)
+                            return -1;
+                        return 0;
+                    }
+
+                    frequencyArray.sort(compare);
+
+                    if ( frequencyArray.length > 5 ) {
+                        frequencyArray.slice(0, 5);
+                    }
+
+                    return frequencyArray;
+
+                }
+                
+                if ( !colorpickerContainer.querySelector('.sg-colorpicker') ) {
+                    var initialColor = undefined;
+                    start();
+                } else if ( colorPickerConfig.initialColor ) {
+                    var initialColor = rgbString2Hex(colorPickerConfig.initialColor);
+                    updatePicker(initialColor);
+                }
+
+                // End from flexicolorPicker
 
             }
-        },
+
+        }
 
 
 

+ 7 - 8
src/allplatforms/css/ColorPickerWidget.css

@@ -1,16 +1,15 @@
 
 .sg-editing-widget-colorPicker-panel {
 	position: 			absolute;
-	top: 				30px;
-	left: 				0px;
+	top: 				26px;
+	left: 				-20px;
 }
 
+.sg-editing-widget-colorPicker-panel .sg-editing-widget-panel {
+	padding: 5px;
+}
 
-
-
-
-.sg-editing-widget-panel > .sg-widget-triangle-up {
-	top:  		-15px;;
-	left: 		0px;
+.sg-editing-widget-colorPicker-panel .sg-widget-triangle-up {
+	left: 		18px;
 }
 

+ 20 - 12
src/allplatforms/css/MenuItem.css

@@ -49,16 +49,24 @@
 
 
 .sg-editing-menu-panel {
-	position: 			absolute;
-	top: 				0px;
-	left: 				15px;
-	width: 				100%;
-	height: 			34px;
-	background-color: 	rgb(183, 12, 29);
+	position: 			relative;
+	top: 				-5px;
+	left: 				11px;
+	background-color: 	rgb(255, 41, 61);
+	border:				2px solid rgb(183, 12, 29);
+	padding: 			4px;
+	-moz-box-sizing: 	border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: 		border-box;
 }
 
 .sg-editing-menu-panel .sg-editing-menu-button {
-	position: 				absolute;
+	display: 				inline-block;
+	padding: 				4px;
+	background-color: 		rgb(255, 41, 61);
+}
+
+.sg-editing-menu-panel .sg-editing-menu-button:hover, .sg-editing-menu-panel .sg-editing-menu-button.active {
 	background-color: 		rgb(183, 12, 29);
 }
 
@@ -69,8 +77,8 @@
 	width: 			0;
 	height: 		0;
 	border-style: 	solid;
-	border-width: 	15px 15px 0 15px;
-	border-color: 	rgb(183, 12, 29) transparent transparent transparent;
+	border-width: 	0 15px 10px 15px;
+	border-color: 	transparent transparent rgb(183, 12, 29) transparent;
 }
 
 .sg-menu-triangle-right {
@@ -78,12 +86,12 @@
 	width: 			0;
 	height: 		0;
 	border-style: 	solid;
-	border-width: 	15px 0 15px 15px;
-	border-color: 	transparent transparent transparent rgb(183, 12, 29);
+	border-width: 	20px 10px 20px 0;
+	border-color: 	transparent rgb(183, 12, 29) transparent transparent;
 }
 
 .sg-editing-menu-container input[type="text"] {
-	position: 		absolute;
+	float: 			left;
 	border:			none;
 	margin: 		0px;
 	padding:		4px;

+ 1 - 1
src/allplatforms/css/MenuItemBackgroundColor.css

@@ -12,7 +12,7 @@
 
 
 .sg-editing-menu-panel > .sg-widget-triangle-right {
-	top:  		0px;;
+	top:  		0px;
 	left: 		0px;
 }
 

+ 5 - 11
src/allplatforms/css/MenuItemBackgroundImg.css

@@ -1,39 +1,33 @@
 #sg-editing-menu-backgroundImg {
-	background-image: url("icons/backgroundImg.svg");;
+	background-image: url("icons/backgroundImg.svg");
 }
 
 #sg-editing-menu-backgroundImg-panel {
 	position: 			absolute;
 	top: 				0px;
 	left: 				30px;
-	width: 				246px;
-	height: 			32px;
+	width: 				250px;
 }
 
 
 
 
 .sg-editing-menu-panel > .sg-menu-triangle-right {
-	top:  		0px;;
+	top:  		0px;
 	left: 		-15px;
 }
 
 #sg-editing-menu-backgroundImg-input {
-	position: absolute;
-	top:		2px;
-	left:		2px;
 	width:		170px;
 
 }
 
 #sg-editing-menu-backgroundImg-chooseFile {
-	top:		2px;
-	left:		183px;
+
 }
 
 #sg-editing-menu-backgroundImg-clear {
-	top:		2px;
-	left:		214px;
+	
 }
 
 #sg-editing-menu-backgroundImg-chooseFile {

+ 3 - 9
src/allplatforms/css/MenuItemBackgroundRepeat.css

@@ -8,7 +8,7 @@
 	position: 			absolute;
 	top: 				0px;
 	left: 				30px;
-	width: 				98px;
+	width: 				102px;
 	height: 			32px;
 }
 
@@ -16,8 +16,8 @@
 
 
 .sg-editing-menu-panel > .sg-menu-triangle-right {
-	top:  		0px;;
-	left: 		-15px;
+	top:  		-1px;
+	left: 		-12px;
 }
 
 
@@ -32,19 +32,13 @@
 
 
 #sg-editing-menu-backgroundRepeat-tile {
-	top: 	2px;
-	left: 	2px;
 	background-image: url("icons/tile.svg");
 }
 
 #sg-editing-menu-backgroundRepeat-tileX {
-	top:	2px;
-	left: 	34px;
 	background-image: url("icons/tileX.svg");
 }
 
 #sg-editing-menu-backgroundRepeat-tileY {
-	top:	2px;
-	left: 	66px;
 	background-image: url("icons/tileY.svg");
 }

+ 4 - 8
src/allplatforms/css/MenuItemPageTitle.css

@@ -7,7 +7,7 @@
 	position: 			absolute;
 	top: 				0px;
 	left: 				30px;
-	width: 				216px;
+	width: 				220px;
 	height: 			32px;
 }
 
@@ -15,21 +15,17 @@
 
 
 .sg-editing-menu-panel > .sg-menu-triangle-right {
-	top:  		0px;;
-	left: 		-15px;
+	top:  		-1px;
+	left: 		-12px;
 }
 
 #sg-editing-menu-pageTitle-input {
-	position: absolute;
-	top:		2px;
-	left:		2px;
 	width:		170px;
 
 }
 
 #sg-editing-menu-pageTitle-clear {
-	top:		2px;
-	left:		183px;
+	
 }
 
 #sg-editing-menu-pageTitle-clear {

+ 7 - 10
src/allplatforms/css/MenuItemSaveRemote.css

@@ -5,34 +5,31 @@
 
 #sg-editing-menu-saveRemote-panel {
 	position: 			absolute;
-	top: 				30px;
+	top: 				26px;
 	left: 				0px;
-	width: 				216px;
+	width: 				220px;
 	height: 			32px;
 }
 
 #sg-editing-menu-saveRemote-panel .sg-editing-menu-panel {
 	top: 				15px;
-	left: 				0px;
+	left: 				-20px;
 }
 
 
 .sg-editing-menu-panel > .sg-menu-triangle-top {
-	top:  		-15px;;
-	left: 		0px;
+	top:  		-12px;
+	left: 		18px;
 }
 
 #sg-editing-menu-saveRemote-input {
-	position: absolute;
-	top:		2px;
-	left:		2px;
+	float: 		left;
 	width:		170px;
 
 }
 
 #sg-editing-menu-saveRemote-confirm {
-	top:		2px;
-	left:		183px;
+	
 }
 
 #sg-editing-menu-saveRemote-confirm {

+ 10 - 20
src/allplatforms/css/SliderWidget.css

@@ -1,10 +1,6 @@
-
-
-
-
 .sg-editing-widget-slider-panel {
 	position: 			absolute;
-	top: 				30px;
+	top: 				26px;
 	left: 				0px;
 	width: 				30px;
 	height: 			120px;
@@ -16,29 +12,23 @@
 	height: 	100%;
 }
 
-
-.sg-editing-widget-panel > .sg-widget-triangle-up {
-	top:  		-15px;;
-	left: 		0px;
-}
-
 .sg-editing-widget-slider-range {
 	position: 	absolute;
-	top:		0px;
+	top:		4px;
 	left:		0px;
 	width: 		2px;
-	height: 	120px;
-
-	border-left: 14px solid rgb(183, 12, 29);
-	border-right: 14px solid rgb(183, 12, 29);
-	background-color: rgb(255,255,255);
+	height: 	108px;
+	border-color: rgb(255, 41, 61);
+	border-width: 0 12px 0 12px;
+	border-style: solid;
+	background-color: rgb(183, 12, 29);
 }
 
 .sg-editing-widget-slider-handle {
 	position: 	absolute;
-	left:  		-12px;
-	width: 		26px;
+	left:  		-10px;
+	width: 		22px;
 	height: 	8px;
 	
-	background-color: rgb(255,255,255);
+	background-color: rgb(183, 12, 29);
 }

+ 1 - 3
src/allplatforms/css/SuperGlue.css

@@ -1,5 +1,3 @@
-
-
 @font-face {
     font-family: Dosis;
     src: url("./fonts/dosis/Dosis-Regular.otf") format("opentype");
@@ -22,4 +20,4 @@ body {
 	user-select: 			none;
 	-moz-user-select: 		none;
 	-webkit-user-select: 	none;
-}
+}

+ 51 - 15
src/allplatforms/css/TextEditor.css

@@ -1,9 +1,10 @@
 
 #sg-editing-textEditor-container {
-	
 	position: absolute;
 	top: 0px;
 	left: 0px;
+	font-family: 		Dosis, sans-serif;
+	letter-spacing: 	1px;
 
 }
 
@@ -57,13 +58,20 @@
 }
 
 #textShapeToolbar .dropdown-toggle.open:not(.right):after {
-	position: absolute;
-	left: 0;
-	bottom: -5px;
-	height: 6px;
-	width: 100%;
-	background: #B10A1B;
-	content: "";
+	position: 		absolute;
+	left: 			0;
+	bottom: 		-11px;
+	content: 		"";
+	width: 			0;
+	height: 		0;
+	border-style: 	solid;
+	border-width: 	0 15px 10px 15px;
+	border-color: 	transparent transparent rgb(183, 12, 29) transparent;
+	z-index: 		2;
+}
+
+#textShapeToolbar .dropdown-toggle.right {
+	padding-right: 18px;
 }
 
 #textShapeToolbar .dropdown-toggle .caret {
@@ -86,7 +94,7 @@
 
 #textShapeToolbar .dropdown-menu {
 	position: absolute;
-	top: 32px;
+	top: 41px;
 	left: -20px;
 	width: 200px;
 	max-height: 200px;
@@ -105,10 +113,10 @@
 }
 
 #textShapeToolbar .dropdown-menu.input-append {
-	display: block;
-	background: rgb(255, 95, 113);
+	display: none !important;
 	color: #fff;
-	padding: 5px;
+	background-color: rgb(255, 41, 61);
+	padding: 4px;
 }
 
 #textShapeToolbar .dropdown-menu.input-append input {
@@ -116,7 +124,7 @@
 }
 
 #textShapeToolbar .dropdown-menu.active {
-	display: block;
+	display: block !important;
 }
 
 #textShapeToolbar .dropdown-menu li, #textShapeToolbar .dropdown-menu li a {
@@ -127,7 +135,6 @@
 
 #textShapeToolbar .dropdown-menu li a {
 	padding: 3px 6px;
-	border-bottom: 1px solid #fff;
 	text-decoration: none;
 }
 
@@ -234,4 +241,33 @@
 
 #textShapeToolbar a i.icon-color {
 	background-image: url(./icons/font.color.svg);
-}
+}
+
+#textShapeToolbar .sg-colorpicker-container-text {
+	position: absolute;
+	background-color: 	rgb(255, 41, 61);
+	border:				2px solid rgb(183, 12, 29);
+	padding: 			5px;
+	-moz-box-sizing: 	border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: 		border-box;
+	top: 				41px;
+	left: 				-20px;
+	display: 			none;
+}
+
+#textShapeToolbar .sg-colorpicker-container-text.active {
+	display: block;
+}
+
+#textShapeToolbar .sg-colorpicker-container-text.active:after {
+	content:		'';
+	position: 		absolute;
+	top: 			-12px;
+	left: 			18px;
+	width: 			0;
+	height: 		0;
+	border-style: 	solid;
+	border-width: 	0 15px 10px 15px;
+	border-color: 	transparent transparent rgb(183, 12, 29) transparent;
+};

+ 17 - 7
src/allplatforms/css/Widget.css

@@ -17,7 +17,7 @@
 	width: 				30px;
 	height: 			30px;
 	margin: 			0;
-	padding: 			1px 6px; /* icon files are 18x28 */
+	/*padding: 			1px 6px;*/ /* icon files are 18x28 */
 	border: 			none;
 	outline: 			none;
 	overflow: 			visible;
@@ -51,24 +51,34 @@
 
 
 .sg-editing-widget-panel {
-	position: 			absolute;
+	position: 			relative;
 	top: 				15px;
 	left: 				0px;
-	width: 				100%;
-	height: 			34px;
-	background-color: 	rgb(183, 12, 29);
+	background-color: 	rgb(255, 41, 61);
+	border:				2px solid rgb(183, 12, 29);
+	padding: 			4px;
+	-moz-box-sizing: 	border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: 		border-box;
 }
 
 .sg-editing-widget-panel .sg-editing-widget-button {
+	position:				relative;
+	background-color: 		rgb(255, 41, 61);
+}
+
+.sg-editing-widget-panel .sg-editing-widget-button:hover, .sg-editing-widget-panel .sg-editing-widget-button.active {
 	background-color: 		rgb(183, 12, 29);
 }
 
 .sg-widget-triangle-up {
 	position: 		absolute;
+	top: 			-12px;
+	left: 			-2px;
 	width: 			0;
 	height: 		0;
 	border-style: 	solid;
-	border-width: 	0 15px 15px 15px;
+	border-width: 	0 15px 10px 15px;
 	border-color: 	transparent transparent rgb(183, 12, 29) transparent;
 }
 
@@ -82,7 +92,7 @@
 }
 
 .sg-editing-widget-container input[type="text"] {
-	position: 		absolute;
+	float: 			left;
 	border:			none;
 	margin: 		0px;
 	padding:		4px;

+ 7 - 16
src/allplatforms/css/WidgetIFrame.css

@@ -4,36 +4,27 @@
 
 #sg-editing-widget-iframe-panel {
 	position: 			absolute;
-	top: 				30px;
-	left: 				0px;
-	width: 				246px;
+	top: 				26px;
+	left: 				-20px;
+	width: 				250px;
 	height: 			32px;
 }
 
-
-
-
-.sg-editing-widget-panel > .sg-widget-triangle-up {
-	top:  		-15px;;
-	left: 		0px;
+#sg-editing-widget-iframe-panel .sg-widget-triangle-up {
+	left: 		18px;
 }
 
 #sg-editing-widget-iframe-input {
-	position: 	absolute;
-	top:		2px;
-	left:		2px;
 	width:		170px;
 
 }
 
 #sg-editing-widget-iframe-chooseFile {
-	top:		2px;
-	left:		182px;
+	
 }
 
 #sg-editing-widget-iframe-clear {
-	top:		2px;
-	left:		214px;
+	
 }
 
 #sg-editing-widget-iframe-chooseFile {

+ 6 - 20
src/allplatforms/css/WidgetImgDimensions.css

@@ -4,21 +4,19 @@
 
 #sg-editing-widget-imgDimensions-panel {
 	position: 			absolute;
-	top: 				30px;
-	left: 				0px;
-	width: 				66px;
-	height: 			98px;
+	top: 				26px;
+	left: 				-20px;
+	width: 				192px;
 }
 
 #sg-editing-widget-imgDimensions-panel > .sg-editing-widget-panel {
-	height: 			98px;
+
 }
 
 
 
-.sg-editing-widget-panel > .sg-widget-triangle-up {
-	top:  		-15px;;
-	left: 		0px;
+#sg-editing-widget-imgDimensions-panel .sg-widget-triangle-up {
+	left: 		18px;
 }
 
 
@@ -34,37 +32,25 @@
 
 
 #sg-editing-widget-imgDimensions-tile {
-	top: 2px;
-	left: 2px;
 	background-image: url("icons/tile.svg");
 }
 
 #sg-editing-widget-imgDimensions-tileX {
-	top: 34px;
-	left: 2px;
 	background-image: url("icons/tileX.svg");
 }
 
 #sg-editing-widget-imgDimensions-tileY {
-	top: 66px;
-	left: 2px;
 	background-image: url("icons/tileY.svg");
 }
 
 #sg-editing-widget-imgDimensions-stretch {
-	top: 2px;
-	left: 34px;
 	background-image: url("icons/stretch.svg");
 }
 
 #sg-editing-widget-imgDimensions-stretchAspectRatio {
-	top: 34px;
-	left: 34px;
 	background-image: url("icons/stretchAspectRatio.svg");
 }
 
 #sg-editing-widget-imgDimensions-aspectRatio {
-	top: 66px;
-	left: 34px;
 	background-image: url("icons/aspectRatio.svg");
 }

+ 7 - 16
src/allplatforms/css/WidgetImgLink.css

@@ -4,36 +4,27 @@
 
 #sg-editing-widget-imgLink-panel {
 	position: 			absolute;
-	top: 				30px;
-	left: 				0px;
+	top: 				26px;
+	left: 				-20px;
 	width: 				246px;
 	height: 			32px;
 }
 
-
-
-
-.sg-editing-widget-panel > .sg-widget-triangle-up {
-	top:  		-15px;;
-	left: 		0px;
+#sg-editing-widget-imgLink-panel .sg-widget-triangle-up {
+	left: 		18px;
 }
 
 #sg-editing-widget-imgLink-input {
-	position: 	absolute;
-	top:		2px;
-	left:		2px;
-	width:		170px;
+	width:		166px;
 
 }
 
 #sg-editing-widget-imgLink-chooseFile {
-	top:		2px;
-	left:		182px;
+	
 }
 
 #sg-editing-widget-imgLink-clear {
-	top:		2px;
-	left:		214px;
+	
 }
 
 #sg-editing-widget-imgLink-chooseFile {

+ 7 - 16
src/allplatforms/css/WidgetImgSrc.css

@@ -4,36 +4,27 @@
 
 #sg-editing-widget-imgSrc-panel {
 	position: 			absolute;
-	top: 				30px;
-	left: 				0px;
+	top: 				26px;
+	left: 				-20px;
 	width: 				246px;
-	height: 			32px;
 }
 
 
-
-
-.sg-editing-widget-panel > .sg-widget-triangle-up {
-	top:  		-15px;;
-	left: 		0px;
+#sg-editing-widget-imgSrc-panel .sg-widget-triangle-up {
+	left: 		18px;
 }
 
 #sg-editing-widget-imgSrc-input {
-	position: absolute;
-	top:		2px;
-	left:		2px;
-	width:		170px;
+	width:		166px;
 
 }
 
 #sg-editing-widget-imgSrc-chooseFile {
-	top:		2px;
-	left:		182px;
+	
 }
 
 #sg-editing-widget-imgSrc-clear {
-	top:		2px;
-	left:		214px;
+	
 }
 
 #sg-editing-widget-imgSrc-chooseFile {

+ 34 - 28
src/allplatforms/libs/flexicolorpicker/colorpicker.css

@@ -1,10 +1,10 @@
 .sg-colorpicker-container {
-    position:               absolute;
+    position:               relative;
     top:                    0px;
     left:                   0px;
-    width:                  200px;
-    height:                 130px;
-    background-color:       rgb(183, 12, 29);
+    width:                  183px;
+    height:                 120px;
+    background-color:       rgb(255, 41, 61);
 }
 
 .sg-colorpicker .picker-wrapper, 
@@ -25,16 +25,16 @@
 .sg-colorpicker .slide {
     cursor:                 crosshair;
     float:                  left;
-    outline:                1px solid #fff;
+    outline:                1px solid rgb(183, 12, 29);
     -moz-user-select:       none;
     -webkit-user-select:    none;
     user-select:            none;
 }
 
 .sg-colorpicker {
-    padding:                5px;
+    padding:                0px;
     background-color:       transparent;
-    float:                  left;
+    position:               relative;
 }
 
 .sg-colorpicker .picker {
@@ -67,46 +67,51 @@
 
 .sg-colorpicker-input-container {
     position:               absolute;
-    top:                    5px;
-    right:                  5px;
-    width:                  65px;
+    top:                    0px;
+    right:                  0px;
+    width:                  58px;
     height:                 100px;
 }
 
 .sg-colorpicker-input-container input {
     position:               relative;
     display:                block;
-    
-    /*width:                  65px;
-    height:                 22px;*/
-    width:                  35px;
-    height:                 16px;
+    width:                  34px;
+    height:                 14.5px !important;
+    padding:                4px;
     margin-bottom:          2px;
+    border:                 none;
+    margin:                 none;
+    /*outline:                1px solid rgb(183, 12, 29);*/
 }
 
 .sg-colorpicker-input-container input[type="number"] {
     padding-left:           20px;
 }
 
-.sg-colorpicker-input-container input[type="number"]:after {
+.sg-colorpicker-input-container > div {
+    position:               relative;
+}
+
+.sg-colorpicker-input-container > div:after {
     content:                attr(data-label);
     position:               absolute;
-    top:                    3px;
-    left:                   3px;
+    top:                    4.1px;
+    left:                   4px;
     width:                  10px;
     height:                 10px;
-    background-color:       #000;
+    font-size:              12px;
 }
 
 .sg-colorpicker-input-container input[type="text"] {
-    /*margin-top:             13px;*/
-    width:                  51px;
+    margin-top:             3.5px !important;
+    width:                  50px !important;
 }
 
 .sg-colorpicker-top-colors {
     position:               absolute;
-    bottom:                 5px;
-    left:                   5px;
+    bottom:                 0px;
+    left:                   0px;
     width:                  150px;
     height:                 15px;
 }
@@ -117,18 +122,19 @@
     height:                 15px;
     margin-right:           4px;
     cursor:                 crosshair;
-    outline:                1px solid #fff;
+    outline:                1px solid rgb(183, 12, 29);
 }
 
 .sg-colorpicker-transparent {
     position:               absolute;
-    bottom:                 5px;
-    right:                  5px;
+    bottom:                 0px;
+    right:                  0px;
     width:                  15px;
     height:                 15px;
-    background-image:       url(icons/colorpicker-transparent.png);
+    background-image:       url(colorpickerTransparent.png);
     background-repeat:      no-repeat;
     background-size:        15px 15px;
     background-color:       #cfcfcf;
-    outline:                1px solid #fff;
+    cursor:                 pointer;
+    outline:                1px solid rgb(183, 12, 29);
 }

BIN
src/allplatforms/libs/flexicolorpicker/colorpickerTransparent.png


+ 6 - 5
testpages/newFormat.html

@@ -10,23 +10,24 @@
 			#sg-page.sg-page-centered { margin: 0px auto; }
 			.sg-element { position: absolute; overflow: hidden; }
 		</style>
+		<link rel="stylesheet" href="/resources/css/SuperGlue.css" data-superglue="text-css">
 	</head>
 	<body style="background-image: url(/grid_orange-color.gif); background-repeat: repeat-x;">
 		<div id="sg-page" class="sg-page-centered" style="width: 1054px;" data-superglue-grid="off/0px">
 			<div class="sg-element" data-superglue-type="TextElement" style="left: 390px; top: 105px; width: 388px; height: 173px; border-image-source: none; padding: 22px; border-color: rgb(0, 0, 0);">
-<p style="font-size: 18px; font-family: Helvetica; color: rgb(255, 255, 255);">Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. <br>Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. </p>
+				<p style="font-size: 18px; font-family: Helvetica; color: rgb(255, 255, 255);">Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. <br>Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. Hello friend, I am SuperGlue. </p>
 			</div>
 			<div class="sg-element" data-superglue-type="ImageElement" style="left: 0px; top: 68px; width: 314px; height: 508px; border-image-source: none;">
-			<div style="width: 100%; height: 100%; background-image: url(/newSG/logo_neg.png); background-repeat: repeat;"></div>
+				<div style="width: 100%; height: 100%; background-image: url(/newSG/logo_neg.png); background-repeat: repeat;"></div>
 			</div>
 			<div class="sg-element" data-superglue-type="EmbedElement" style="left: 408px; top: 449px; width: 646px; height: 337px; border-top-left-radius: 4%; border-top-right-radius: 4%; border-bottom-right-radius: 4%; border-bottom-left-radius: 4%; background-color: rgb(21, 114, 32);">
-<iframe scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/19163436&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true" frameborder="no" height="300" width="100%"></iframe>
+				<iframe scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/19163436&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true" frameborder="no" height="300" width="100%"></iframe>
 			</div>
 			<div class="sg-element" data-superglue-type="ImageElement" style="left: 0px; top: 1190px; width: 1054px; height: 136px;">
-	<div style="width: 100%; height: 100%; background-image: url(/diagram_v3.png); background-repeat: repeat;"></div>
+				<div style="width: 100%; height: 100%; background-image: url(/diagram_v3.png); background-repeat: repeat;"></div>
 			</div>
 			<div class="sg-element" data-superglue-type="IFrameElement" style="left: 226px; top: 799px; width: 828px; height: 325px;">
-	<iframe src="http://fusion-festival.de" style="width: 100%; height: 100%;"></iframe>
+				<iframe src="http://fusion-festival.de" style="width: 100%; height: 100%;"></iframe>
 			</div>
 		</div>
 	</body>