Отказ от ответственности: я написал аналогичный ответ в другом месте.
После кучки находок, grep, less (я настоятельно советую установить Cygwin для такого рода исследований, это действительнопомогает).Я выяснил, что некоторые стандартные виджеты «Настройки редактора» используют TextBoxEditorSettings
, чтобы сделать их ширину обновляемой.Этот виджет можно найти здесь: pvd/widget/editors/settings/TextBoxEditorSetting.js
TextBox, например, является одним из них.Связь между TextBoxEditorSettings
и TextBox
редактором можно найти в pvd/widget/registry/BasicHelperConfiguration.js
:
define(
[/* [...] */],
function (declare,
/* [...] */,
textBoxEditorSettings,
/* [...] */) {
return {
editors: {
editorConfigs: {
// [...]
"textBox": {
settings: textBoxEditorSettings
} // [...]
}
}
}
}
);
TextBoxEditorSettings
управляеткорпус редактора, встроенный в PropertyTable
.Вместо того, чтобы настраивать редактирование конфигурации ширины с нуля, я попытался повторно использовать и расширить его.
Если нам нужно добавить другие настройки (текст и т. Д.).мы не должны добавлять их напрямую к TextBoxEditorSettings
, в противном случае все редакторы, настроенные с ним, тоже получат эти настройки, особенно TextBox
, что не такмы хотим.Вместо этого мы будем использовать мелкую копию , вызывая slice()
.
require(
[
"dojo/_base/lang",
"ecm/model/configuration/ControlRegistry",
// [...] Include below all the settings editor you need
"pvd/widget/editors/settings/TextBoxEditorSettings",
// Below your custom template
"AWannaBeResizeableEditorPluginDojo/editors/AWannaBeResizeableEditor",
// Below for translation support of TextBoxEditorSettings
"dojo/i18n!pvd/nls/common"
],
function(lang, ControlRegistry, TextBoxSetting,
TextBoxEditorSettings, AWannaBeResizeableEditor,
resources) {
var editorId = "aWannaBeResizeableEditor";
// Perform a shallow copy to avoid conflicts
var editorSettings = TextBoxEditorSettings.slice();
// Additional setting editors
// Repeat this block for all further setting editor needed
/// 1. Definition
var anotherSettingEditor = {
// [...]
};
/// 2. Insertion
editorSettings.unshift(anotherSettingEditor);
/// End of this block
// Registration in the editor configurations...
ControlRegistry.editors.editorConfigs[editorId] = {
label: "A Wannabe Resizable Editor",
editorClass: AWannaBeResizeableEditor,
settings: editorSettings
}
// Registring the widget in the right mapping type
// [...]
}
);
Затем напишите ваш шаблон, чтобы сделать его максимально легко изменяемым.Я разработал его для изменения размера редактора с верхнего узла.Я назвал точку присоединения верхнего узла oneuiBaseNode
, поэтому нет необходимости переопределять adjustWidth()
.и resetWidth()
.
<div class="searchBoxFillerWidget"
data-dojo-attach-point="oneuiBaseNode">
<!--
Write here HTML code relatively resizeable
to the top node.
-->
</div>