mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 16:18:05 +02:00
style
This commit is contained in:
parent
4c3f5b3bbc
commit
e5ef589a3c
3 changed files with 59 additions and 24 deletions
|
@ -1812,7 +1812,7 @@ body#entity-list-body {
|
||||||
}
|
}
|
||||||
.context-menu li {
|
.context-menu li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding: 0 5px 0 5px;
|
padding: 4px 18px 4px 18px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
@ -1820,8 +1820,9 @@ body#entity-list-body {
|
||||||
background-color: #e3e3e3;
|
background-color: #e3e3e3;
|
||||||
}
|
}
|
||||||
.context-menu li.separator {
|
.context-menu li.separator {
|
||||||
border-top: 1px solid #000000;
|
border-top: 1px solid #333333;
|
||||||
margin: 5px 5px;
|
margin: 5px 5px;
|
||||||
|
padding: 0 0;
|
||||||
}
|
}
|
||||||
.context-menu li.disabled {
|
.context-menu li.disabled {
|
||||||
color: #333333;
|
color: #333333;
|
||||||
|
|
|
@ -70,7 +70,10 @@ var selectedEntities = [];
|
||||||
|
|
||||||
var entityList = null; // The ListView
|
var entityList = null; // The ListView
|
||||||
|
|
||||||
var entityListContextMenu = new EntityListContextMenu();
|
/**
|
||||||
|
* @type EntityListContextMenu
|
||||||
|
*/
|
||||||
|
var entityListContextMenu = null;
|
||||||
|
|
||||||
var currentSortColumn = 'type';
|
var currentSortColumn = 'type';
|
||||||
var currentSortOrder = ASCENDING_SORT;
|
var currentSortOrder = ASCENDING_SORT;
|
||||||
|
@ -187,21 +190,24 @@ function loaded() {
|
||||||
entityList = new ListView(elEntityTableBody, elEntityTableScroll, elEntityTableHeaderRow,
|
entityList = new ListView(elEntityTableBody, elEntityTableScroll, elEntityTableHeaderRow,
|
||||||
createRow, updateRow, clearRow, WINDOW_NONVARIABLE_HEIGHT);
|
createRow, updateRow, clearRow, WINDOW_NONVARIABLE_HEIGHT);
|
||||||
|
|
||||||
entityListContextMenu.initialize();
|
entityListContextMenu = new EntityListContextMenu();
|
||||||
|
|
||||||
|
|
||||||
function startRenamingEntity(entityID) {
|
function startRenamingEntity(entityID) {
|
||||||
if (!entitiesByID[entityID] || !entitiesByID[entityID].elRow) {
|
let entity = entitiesByID[entityID];
|
||||||
|
if (!entity || entity.locked || !entity.elRow) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let elCell = entitiesByID[entityID].elRow.childNodes[COLUMN_INDEX.NAME];
|
let elCell = entity.elRow.childNodes[COLUMN_INDEX.NAME];
|
||||||
let elRenameInput = document.createElement("input");
|
let elRenameInput = document.createElement("input");
|
||||||
elRenameInput.setAttribute('class', 'rename-entity');
|
elRenameInput.setAttribute('class', 'rename-entity');
|
||||||
elRenameInput.value = entitiesByID[entityID].name;
|
elRenameInput.value = entity.name;
|
||||||
elRenameInput.onclick = function(event) {
|
let ignoreClicks = function(event) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
};
|
};
|
||||||
|
elRenameInput.onclick = ignoreClicks;
|
||||||
|
elRenameInput.ondblclick = ignoreClicks;
|
||||||
elRenameInput.onkeyup = function(keyEvent) {
|
elRenameInput.onkeyup = function(keyEvent) {
|
||||||
if (keyEvent.key === "Enter") {
|
if (keyEvent.key === "Enter") {
|
||||||
elRenameInput.blur();
|
elRenameInput.blur();
|
||||||
|
@ -215,7 +221,7 @@ function loaded() {
|
||||||
entityID: entityID,
|
entityID: entityID,
|
||||||
name: value
|
name: value
|
||||||
}));
|
}));
|
||||||
entitiesByID[entityID].name = value;
|
entity.name = value;
|
||||||
elCell.innerText = value;
|
elCell.innerText = value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -260,13 +266,20 @@ function loaded() {
|
||||||
|
|
||||||
refreshFooter();
|
refreshFooter();
|
||||||
}
|
}
|
||||||
entityListContextMenu.open(clickEvent, entityID);
|
|
||||||
|
let enabledContextMenuItems = [];
|
||||||
|
if (entitiesByID[entityID] && !entitiesByID[entityID].locked) {
|
||||||
|
enabledContextMenuItems.push('Rename');
|
||||||
|
enabledContextMenuItems.push('Delete');
|
||||||
|
}
|
||||||
|
|
||||||
|
entityListContextMenu.open(clickEvent, entityID, enabledContextMenuItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onRowClicked(clickEvent) {
|
function onRowClicked(clickEvent) {
|
||||||
let entityID = this.dataset.entityID;
|
let entityID = this.dataset.entityID;
|
||||||
let selection = [entityID];
|
let selection = [entityID];
|
||||||
|
|
||||||
if (clickEvent.ctrlKey) {
|
if (clickEvent.ctrlKey) {
|
||||||
let selectedIndex = selectedEntities.indexOf(entityID);
|
let selectedIndex = selectedEntities.indexOf(entityID);
|
||||||
if (selectedIndex >= 0) {
|
if (selectedIndex >= 0) {
|
||||||
|
@ -759,7 +772,7 @@ function loaded() {
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
// close context menu when switching focus to another window
|
// close context menu when switching focus to another window
|
||||||
$(window).blur(function(){
|
$(window).blur(function() {
|
||||||
entityListContextMenu.close.call(entityListContextMenu);
|
entityListContextMenu.close.call(entityListContextMenu);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@ const CONTEXT_MENU_CLASS = "context-menu";
|
||||||
function EntityListContextMenu() {
|
function EntityListContextMenu() {
|
||||||
this._elContextMenu = null;
|
this._elContextMenu = null;
|
||||||
this._callback = null;
|
this._callback = null;
|
||||||
|
this._listItems = [];
|
||||||
|
this._initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityListContextMenu.prototype = {
|
EntityListContextMenu.prototype = {
|
||||||
|
@ -38,6 +40,11 @@ EntityListContextMenu.prototype = {
|
||||||
*/
|
*/
|
||||||
_selectedEntityID: null,
|
_selectedEntityID: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_listItems: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the context menu
|
* Close the context menu
|
||||||
*/
|
*/
|
||||||
|
@ -55,10 +62,17 @@ EntityListContextMenu.prototype = {
|
||||||
* Open the context menu
|
* Open the context menu
|
||||||
* @param clickEvent
|
* @param clickEvent
|
||||||
* @param selectedEntityID
|
* @param selectedEntityID
|
||||||
|
* @param enabledOptions
|
||||||
*/
|
*/
|
||||||
open: function(clickEvent, selectedEntityID) {
|
open: function(clickEvent, selectedEntityID, enabledOptions) {
|
||||||
this._selectedEntityID = selectedEntityID;
|
this._selectedEntityID = selectedEntityID;
|
||||||
// If the right-clicked item has a context menu open it.
|
|
||||||
|
this._listItems.forEach(function(listItem) {
|
||||||
|
let enabled = enabledOptions.includes(listItem.label);
|
||||||
|
listItem.enabled = enabled;
|
||||||
|
listItem.element.setAttribute('class', enabled ? '' : 'disabled');
|
||||||
|
});
|
||||||
|
|
||||||
this._elContextMenu.style.display = "block";
|
this._elContextMenu.style.display = "block";
|
||||||
this._elContextMenu.style.left
|
this._elContextMenu.style.left
|
||||||
= Math.min(clickEvent.pageX, document.body.offsetWidth - this._elContextMenu.offsetWidth).toString() + "px";
|
= Math.min(clickEvent.pageX, document.body.offsetWidth - this._elContextMenu.offsetWidth).toString() + "px";
|
||||||
|
@ -85,15 +99,21 @@ EntityListContextMenu.prototype = {
|
||||||
let elListItem = document.createElement("li");
|
let elListItem = document.createElement("li");
|
||||||
elListItem.innerText = itemLabel;
|
elListItem.innerText = itemLabel;
|
||||||
|
|
||||||
if (isEnabled === undefined || isEnabled) {
|
let listItem = {
|
||||||
elListItem.addEventListener("click", function () {
|
label: itemLabel,
|
||||||
if (this._callback) {
|
element: elListItem,
|
||||||
this._callback.call(this, itemLabel, this._selectedEntityID);
|
enabled: false
|
||||||
}
|
};
|
||||||
}.bind(this), false);
|
|
||||||
} else {
|
elListItem.addEventListener("click", function () {
|
||||||
elListItem.setAttribute('class', 'disabled');
|
if (listItem.enabled && this._callback) {
|
||||||
}
|
this._callback.call(this, itemLabel, this._selectedEntityID);
|
||||||
|
}
|
||||||
|
}.bind(this), false);
|
||||||
|
|
||||||
|
elListItem.setAttribute('class', 'disabled');
|
||||||
|
|
||||||
|
this._listItems.push(listItem);
|
||||||
this._elContextMenu.appendChild(elListItem);
|
this._elContextMenu.appendChild(elListItem);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -109,8 +129,9 @@ EntityListContextMenu.prototype = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the context menu.
|
* Initialize the context menu.
|
||||||
|
* @private
|
||||||
*/
|
*/
|
||||||
initialize: function() {
|
_initialize: function() {
|
||||||
this._elContextMenu = document.createElement("ul");
|
this._elContextMenu = document.createElement("ul");
|
||||||
this._elContextMenu.setAttribute("class", CONTEXT_MENU_CLASS);
|
this._elContextMenu.setAttribute("class", CONTEXT_MENU_CLASS);
|
||||||
document.body.appendChild(this._elContextMenu);
|
document.body.appendChild(this._elContextMenu);
|
||||||
|
|
Loading…
Reference in a new issue