mirror of
https://github.com/BorysLevytskyi/BitwiseCmd.git
synced 2026-01-31 16:14:33 +01:00
Created HelpView
This commit is contained in:
116
.idea/workspace.xml
generated
116
.idea/workspace.xml
generated
@@ -23,11 +23,11 @@
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="views.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<file leaf-file-name="views.js" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="255" max-vertical-offset="833">
|
||||
<caret line="15" column="40" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="40" />
|
||||
<state vertical-scroll-proportion="0.76004344" vertical-offset="252" max-vertical-offset="1173">
|
||||
<caret line="56" column="6" selection-start-line="56" selection-start-column="6" selection-end-line="56" selection-end-column="6" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -36,43 +36,43 @@
|
||||
<file leaf-file-name="inputCtrl.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/inputCtrl.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="119" max-vertical-offset="493">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="493">
|
||||
<caret line="7" column="16" selection-start-line="7" selection-start-column="16" selection-end-line="7" selection-end-column="16" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="bootstrap.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/bootstrap.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="119" max-vertical-offset="238">
|
||||
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="index.html" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/index.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-16.73077" vertical-offset="534" max-vertical-offset="1700">
|
||||
<caret line="57" column="42" selection-start-line="57" selection-start-column="42" selection-end-line="57" selection-end-column="42" />
|
||||
<state vertical-scroll-proportion="-22.0" vertical-offset="516" max-vertical-offset="1530">
|
||||
<caret line="64" column="45" selection-start-line="64" selection-start-column="45" selection-end-line="64" selection-end-column="45" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="html.js" pinned="false" current="true" current-in-tab="true">
|
||||
<file leaf-file-name="html.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/components/html.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.29533115" vertical-offset="0" max-vertical-offset="1105">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1105">
|
||||
<caret line="16" column="23" selection-start-line="16" selection-start-column="23" selection-end-line="16" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="dispatcher.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/dispatcher.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="476">
|
||||
<caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="commandr.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/components/commandr.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
@@ -166,8 +166,10 @@
|
||||
<option value="$PROJECT_DIR$/css/styles.css" />
|
||||
<option value="$PROJECT_DIR$/app/views.js" />
|
||||
<option value="$PROJECT_DIR$/app/inputCtrl.js" />
|
||||
<option value="$PROJECT_DIR$/index.html" />
|
||||
<option value="$PROJECT_DIR$/components/html.js" />
|
||||
<option value="$PROJECT_DIR$/app/dispatcher.js" />
|
||||
<option value="$PROJECT_DIR$/index.html" />
|
||||
<option value="$PROJECT_DIR$/app/views/views.js" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -282,6 +284,24 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="BitwiseCalc" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="BitwiseCalc" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="app" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="views" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
@@ -297,11 +317,11 @@
|
||||
<recent name="C:\Projects\BitwiseCalc\js\components" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="C:\Projects\BitwiseCalc\app\views" />
|
||||
<recent name="C:\Projects\BitwiseCalc" />
|
||||
<recent name="C:\Projects\BitwiseCalc\js\bitwise" />
|
||||
<recent name="C:\Projects\BitwiseCalc\js" />
|
||||
<recent name="C:\Projects\BitwiseCalc\js\components" />
|
||||
<recent name="C:\Projects\BitwiseCalc\app" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager">
|
||||
@@ -405,14 +425,6 @@
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/components/html.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="18" max-vertical-offset="867">
|
||||
<caret line="13" column="12" selection-start-line="13" selection-start-column="12" selection-end-line="13" selection-end-column="12" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/components/should.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="442" max-vertical-offset="578">
|
||||
@@ -451,7 +463,7 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="51" max-vertical-offset="918">
|
||||
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
|
||||
@@ -497,7 +509,7 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="139" max-vertical-offset="867">
|
||||
<caret line="18" column="30" selection-start-line="18" selection-start-column="30" selection-end-line="18" selection-end-column="30" />
|
||||
@@ -544,7 +556,7 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="510" max-vertical-offset="663">
|
||||
<caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
|
||||
@@ -583,7 +595,7 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="68" max-vertical-offset="204">
|
||||
<caret line="4" column="3" selection-start-line="4" selection-start-column="3" selection-end-line="4" selection-end-column="3" />
|
||||
@@ -622,7 +634,7 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="68" max-vertical-offset="204">
|
||||
<caret line="4" column="3" selection-start-line="4" selection-start-column="3" selection-end-line="4" selection-end-column="3" />
|
||||
@@ -661,7 +673,7 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="17" max-vertical-offset="170">
|
||||
<caret line="1" column="5" selection-start-line="1" selection-start-column="5" selection-end-line="1" selection-end-column="5" />
|
||||
@@ -730,14 +742,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="833">
|
||||
<caret line="15" column="40" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="40" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/components/commandr.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="595">
|
||||
@@ -778,6 +782,22 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/dispatcher.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="476">
|
||||
<caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/components/html.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1105">
|
||||
<caret line="16" column="23" selection-start-line="16" selection-start-column="23" selection-end-line="16" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/inputCtrl.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="493">
|
||||
@@ -788,16 +808,16 @@
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/index.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-16.73077" vertical-offset="534" max-vertical-offset="1700">
|
||||
<caret line="57" column="42" selection-start-line="57" selection-start-column="42" selection-end-line="57" selection-end-column="42" />
|
||||
<state vertical-scroll-proportion="-22.0" vertical-offset="516" max-vertical-offset="1530">
|
||||
<caret line="64" column="45" selection-start-line="64" selection-start-column="45" selection-end-line="64" selection-end-column="45" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/components/html.js">
|
||||
<entry file="file://$PROJECT_DIR$/app/views/views.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.29533115" vertical-offset="0" max-vertical-offset="1105">
|
||||
<caret line="16" column="23" selection-start-line="16" selection-start-column="23" selection-end-line="16" selection-end-column="23" />
|
||||
<state vertical-scroll-proportion="0.76004344" vertical-offset="252" max-vertical-offset="1173">
|
||||
<caret line="56" column="6" selection-start-line="56" selection-start-column="6" selection-end-line="56" selection-end-column="6" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
22
app/dispatcher.js
Normal file
22
app/dispatcher.js
Normal file
@@ -0,0 +1,22 @@
|
||||
(function(app){
|
||||
var handlers = [];
|
||||
|
||||
var dispatcher = {
|
||||
handler: function(handler) {
|
||||
handlers.push(handler);
|
||||
},
|
||||
dispatch: function(cmd) {
|
||||
var i, result;
|
||||
for(i=0; i<handlers.length; i++){
|
||||
result = handlers[i](cmd);
|
||||
|
||||
if(result != null)
|
||||
{
|
||||
this
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
})(window.app);
|
||||
43
app/views.js
43
app/views.js
@@ -1,43 +0,0 @@
|
||||
(function(app) {
|
||||
|
||||
var formatter = app.service('formatter');
|
||||
var calc = app.service('calc');
|
||||
|
||||
function ExpressionView(expression) {
|
||||
this.expression = expression;
|
||||
}
|
||||
|
||||
ExpressionView.prototype.getHtml = function () {
|
||||
var expr = this.expression,
|
||||
html = app.service('html').builder(),
|
||||
result = expr.result(),
|
||||
maxLen = calc.maxNumberOfBits(expr.operand1, expr.operand2, result);
|
||||
|
||||
html.element('table', { class: "expression", cellspacing: "0"}, function () {
|
||||
buildRow(html, expr.operand1, formatter.toBinaryString(expr.operand1, maxLen));
|
||||
buildRow(html, expr.operand2, formatter.toBinaryString(expr.operand2, maxLen));
|
||||
buildRow(html, expr.string, formatter.toBinaryString(result, maxLen), { class: 'result'});
|
||||
});
|
||||
|
||||
return html.toString();
|
||||
};
|
||||
|
||||
function buildRow(html, label, binaryStr, attrs) {
|
||||
html.element('tr', attrs, function() {
|
||||
html.element('td', { class: "label"}, label);
|
||||
appendBinaryColumns(html, binaryStr);
|
||||
});
|
||||
}
|
||||
|
||||
function appendBinaryColumns(html, binaryStr) {
|
||||
var css;
|
||||
for(var i=0;i<binaryStr.length;i++) {
|
||||
css = binaryStr[i] == '1' ? 'one' : 'zero';
|
||||
html.element('td', { class: css }, binaryStr[i]);
|
||||
}
|
||||
}
|
||||
|
||||
app.views.ExpressionView = ExpressionView;
|
||||
|
||||
})(window.app);
|
||||
|
||||
63
app/views/views.js
Normal file
63
app/views/views.js
Normal file
@@ -0,0 +1,63 @@
|
||||
(function(app) {
|
||||
|
||||
var formatter = app.service('formatter');
|
||||
var calc = app.service('calc');
|
||||
|
||||
function ExpressionView(expression) {
|
||||
this.expression = expression;
|
||||
}
|
||||
|
||||
ExpressionView.prototype.getViewElement = function () {
|
||||
var expr = this.expression,
|
||||
hb = app.service('html').builder(),
|
||||
result = expr.result(),
|
||||
maxLen = calc.maxNumberOfBits(expr.operand1, expr.operand2, result);
|
||||
|
||||
hb.element('table', { class: "expression", cellspacing: "0"}, function () {
|
||||
buildRow(hb, expr.operand1, formatter.toBinaryString(expr.operand1, maxLen));
|
||||
buildRow(hb, expr.operand2, formatter.toBinaryString(expr.operand2, maxLen));
|
||||
buildRow(hb, expr.string, formatter.toBinaryString(result, maxLen), { class: 'result'});
|
||||
});
|
||||
|
||||
return hb.toHtmlElement();
|
||||
};
|
||||
|
||||
function buildRow(hb, label, binaryStr, attrs) {
|
||||
hb.element('tr', attrs, function() {
|
||||
hb.element('td', { class: "label"}, label);
|
||||
appendBinaryColumns(hb, binaryStr);
|
||||
});
|
||||
}
|
||||
|
||||
function appendBinaryColumns(hb, binaryStr) {
|
||||
var css;
|
||||
for(var i=0;i<binaryStr.length;i++) {
|
||||
css = binaryStr[i] == '1' ? 'one' : 'zero';
|
||||
hb.element('td', { class: css }, binaryStr[i]);
|
||||
}
|
||||
}
|
||||
|
||||
app.views.ExpressionView = ExpressionView;
|
||||
|
||||
})(window.app);
|
||||
|
||||
(function(app){
|
||||
function HelpView(commands) {
|
||||
this.commands = commands;
|
||||
}
|
||||
|
||||
HelpView.prototype.getViewElement = function() {
|
||||
var hb = app.service('html').builder();
|
||||
var commands = this.commands;
|
||||
hb.element('ul', { class: 'result' }, function() {
|
||||
commands.forEach(function(c) {
|
||||
hb.element('li', c.name + " — " + c.description);
|
||||
});});
|
||||
return hb.toHtmlElement();
|
||||
};
|
||||
|
||||
|
||||
app.views.HelpView = HelpView;
|
||||
|
||||
})(window.app);
|
||||
|
||||
20
index.html
20
index.html
@@ -15,7 +15,7 @@
|
||||
<script type="text/javascript" src="app/bitwise/expression.js"></script>
|
||||
<script type="text/javascript" src="app/bitwise/formatter.js"></script>
|
||||
|
||||
<script type="text/javascript" src="app/views.js"></script>
|
||||
<script type="text/javascript" src="app/views/views.js"></script>
|
||||
<script type="text/javascript" src="app/inputCtrl.js"></script>
|
||||
|
||||
<script type="text/javascript" src="app/bootstrap.js"></script>
|
||||
@@ -49,11 +49,8 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var view = new window.app.views.ExpressionView(expr);
|
||||
|
||||
var hb = app.service('html').builder();
|
||||
hb.element('div', { class: 'result', html: view.getHtml() });
|
||||
outputDiv.appendChild(hb.toHtmlElement());
|
||||
var expressionView = new window.app.views.ExpressionView(expr);
|
||||
outputDiv.appendChild(expressionView.getViewElement());
|
||||
|
||||
cmdArgs.commandHandled = true;
|
||||
});
|
||||
@@ -65,16 +62,9 @@
|
||||
}
|
||||
|
||||
var commands = [{ name: 'help', description: 'Displays help'}];
|
||||
var helpView = new app.views.HelpView(commands)
|
||||
outputDiv.appendChild(helpView.getViewElement());
|
||||
|
||||
var hb = html.builder();
|
||||
hb.element('ul', { class: 'result', html: function() {
|
||||
commands.forEach(function(c) {
|
||||
hb.element('li', c.name + " — " + c.description);
|
||||
});
|
||||
}});
|
||||
|
||||
|
||||
outputDiv.appendChild(hb.toHtmlElement());
|
||||
cmdArgs.commandHandled = true;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user