04-05-2015 09:58 AM
I'm trying to create custom element for CallStudio. Something along the lines of built-in math element. It has to have some parameters and a button to open simple editor where I can enter multiple lines of text.
Dealing with parameters is easy, but I couldn't find any examples how to do this "button to open additional editor window". Can anyone point me to any samples?
Thank you!
Ervins
04-06-2015 01:59 AM
If you are trying to pass Text as parameter to your Custom Configurable element, you could declare the field as TextField under setting configuration,
settingArray[n] = new Setting("TextEditor", "Enter Text Content",
"This setting is for large text content",
false, // It is not required
true, // It appears only once
true, // It allows substitution
Setting.TEXTFIELD);
04-07-2015 02:57 AM
Vinod,
Thank you for your suggestion.
At the moment I went with this suggestion. All is looking more or less fine but I have hit another problem - substitutions.
Textfield editor has substitutions enabled regardless if they are disabled for this parameter when Setting is created.
I couldn't find any way how to prevent substitution analysis happening on text field and data format I'm using involves {}.
I could replace curly brackets with some pattern and then replace them back in element logic itself, but then it looks like the way Hemal suggested - I have to create my own editor to modify textfield before saving..
Ervins
04-06-2015 06:46 AM
I assume you are looking for an editor similar to expression in Math element. Check for Math related classes in elements.jar. For example on CVP 8.5, it will be under:
C:\Cisco\CallStudio\eclipse\plugins\com.audiumcorp.studio.elements.core_8.5.1
You can look at the code for the same.
Hemal
04-07-2015 03:01 AM
Hemal,
Thank you for suggestion.
In folder you mention contains only class files - pre-compiled java bytecode. Are those the files you were thinking about?
Ervins
04-07-2015 06:30 AM
Yes, you can decompile them.
Regards,
Hemal
04-07-2015 07:24 AM
Hemal,
I decompiled class files - they use the same approach as Vinod suggested.
The problem with that is I need to disable substitution process in order to use curly brackets in text itself. Any ideas?
Thank you!
Ervins
04-07-2015 10:17 AM
Are you saying that you do not need the substitution functionality where the system will interpret what is there in the { } ? Could you give more details on what you are trying to accomplish ?
04-07-2015 11:33 AM
The real question is whether the updateApp.bat will allow you to use { }
for something other than specifying studio variable names! My guess is
that it won't.
04-07-2015 11:34 AM
You can disable substitution when you define the setting for the TextField.
Just set the 2nd boolean to false.
Setting constructor:
string real-name, string display-name, string description, boolean is
setting required?, boolean is substitution allowed?, boolean is the
setting single?, typeOfSetting
04-07-2015 12:41 PM
Janine,
I already tried setting false for "substitution allowed". Result is - on main settings tab substitution button is grayed out, but on dialog where I can enter text it is available and usable. It looks like text entry dialog is ignoring setting setup parameters.
I'm creating text field setting like this:
Setting tp = new Setting("matrix", "matrix", "Logic martix",
Setting.REQUIRED, Setting.SINGLE,
Setting.SUBSTITUTION_NOT_ALLOWED, Setting.TEXTFIELD);
At the moment I get exception while loading custom element if I leave {} in place. As far as I can tell I have only 2 options:
1. Leave {} as they are in text field. Catch java exception when I try to get setting value and in exception handler get original pre-substituted value. Problem is, I couldn't find function to get pre-substituted value.
2. Avoid {} in original textfield. I don't have control how data are entered, so solution would be mangle input data (search&replace {}, URL encode, MIME encode or just plain zip input text) before saving setting in CallStudio. Then, in element doAction, get mangled data and un-mangle them. Problem with this is - I have to have a way to create my own GUI for entering text or at least intervene with "Save" button on text entry dialog. And I couldn't find a way how to do it.
... and maybe 3rd option - use dynamic configuration class to do the mangling. But I don't know if dynamic config class gets access to pre-substituted vaues or post-substituted values. Couldn't find that info in docs as-well.
Any ideas I'm missing or suggestions on the ones I mentioned?
Thanks for looking at this! I know I'm still a newbie.
Ervins
04-07-2015 12:58 PM
If you set the boolean to false, then the {} button should be greyed out
from the Text box - that's a bug.
I can't think of anything else other than using a different character
instead of then replacing it using regular expressions in the
java code.
04-07-2015 01:59 PM
Since I cannot fix the bug, I agree that changing text content looks like easier way to proceed. Problem with this is - I don't have that many points where I can make changes.
1. create my own GUI for text field.
2. use dynamic configuration - if that has access to pre-substituted element data.
I don't have any experience with both points. GUI would be more cleaner solution, I think. But I have not seen any documentation how to do that.
I'll try with dynamic config class but I don't think it has access to pre-substituted element data.
Ervins
04-07-2015 03:22 PM
Why can't you just modify your doAction?
retrieve the Setting Value then do a string replacement?
04-07-2015 08:14 PM
I do not see why this cannot be done by replacing the value of the Setting to the appropriate one in your action class.
Hemal
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide