31 March 2009

Initialization of Static Array

Array Initialization:
Initialization is almost always required for an array. There are two popular ways for array initializing.

Way 1 : Putting values inside curly braces
 

int[] myArray = new int[]{-1,-1,-1,-1,-1};


Way 2 : Using Loop

int[] myArray = new int[5];
for (int i = 0; i < myArray.Length; i++)
    myArray[i] = -1;


Way 1 is fine for small size array. But if the array size is bigger, it is not the comfortable way.

Problem for Static Array:
The problem for static array is-  when you declare/define it in class, you cannot use loop statement. So, it is not possible to initialize array in 2nd way. Even you cannot initialize static array in constructor, as accessing static attribute does not require constructing any object.

Solution:
Fortunately, it is possible through another static function which returns an array. Of course, that array is initialized inside that function. The following code might help you understand the trick.

 

public class MyClass
{
    public static int[] staticArray = GetInitializedStaticArray();

    public static int[] GetInitializedStaticArray()
    {
        int[] myArray = new int[5];
        for (int i = 0; i < myArray.Length; i++)

            myArray[i] = -1;
        return myArray;
    }
}

28 March 2009

Set/Get (class) Attribute from JavaScript

JavaScript is a client-side scripting language. It is designed for dynamically creating HTML element or changing it. There are some procedures for such kind of work. For example, consider the following HTML element.

<div id="firstID">This is a sample div.</div>

From JavaScript, you can change the attribute id of this div in either of the following two ways.

Way 1:

var divSample = document.getElementById("firstID");
divSample.id = "secondID";

Way 2:

var divSample = document.getElementById("firstID");
divSample.setAttribute("id","secondID");

From way 1, it is easily understandable that the attribute becomes an attribute of div object (divSample.id) which can be used for both set and get.

From way 2, it is clear that attribute can be set by the function  setAttribute(attributeName, attributeValue). Similarly, you can get by the function getAttribute(attributeName).

In fact, both explanations are generally true. The attribute class is an exception. It is used for setting style from CSS.

No browser accepts div.class attribute (like way 1).

Again, different browsers behave differently for this attribute. Mozilla Firefox acceptsdiv.setAttribute("class""styleName") procedure, while Internet Explorer acceptsdiv.setAttribute("className""styleName") procedure (like way 2).

Fortunately, all browsers accept div.className attribute.

Sample Code:

 

<html>
<head>

    <title>Class Attribute in JavaScript</title>

    <style type="text/css">

        .normalbackground-color:Graycolor:Black;}       

        .highlightbackground-color:Yellowcolor:Red;}

    </style>   

    <script language="javascript">

        function setStyle(styleName)
        {
            var divSample = document.getElementById("myDiv");
            divSample.setAttribute("class", styleName);
        }
    </script>

</head

<body>

    <div id="myDiv" class="normal"> This is a sample div.</div>

    <input type="button" value="Highlight" onclick="setStyle('highlight');"/>

    <input type="button" value="Normal" onclick="setStyle('normal');" />

</body>

 

</html>


ToolTip in HTML

Basic TooTtip:
The attribute of HTML element for tooltip is title. You can add a tooltip like below

<img src="alorchhota.jpg" title="Alor Chhota" />


Line Break in ToolTip:
For line break in tooltip, you might be thinking of  either "<br/>" or "\n". Unfortunately, neither does work. The required string is "&#13;". 13 is the ASCII value of line break. For example:

<img src="alorchhota.jpg" title="Alor Chhota&#13;Dhaka, Bangladesh" />

25 March 2009

Shortcut key in JavaScript

Handling shortcut key is a useful feature. Below is the helper code.


function shortcut(shortcut,callback,opt) {
//Provide a set of default options
var default_options = {
'type':'keydown',
'propagate':false,
'target':document
}
if(!opt) opt = default_options;
else {
for(var dfo in default_options) {
if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
}
}

var ele = opt.target
if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
var ths = this;

//The function to be called at keypress
var func = function(e) {
e = e || window.event;

//Find Which key is pressed
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code).toLowerCase();

var keys = shortcut.toLowerCase().split("+");
//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
var kp = 0;
//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
var shift_nums = {
"`":"~",
"1":"!",
"2":"@",
"3":"#",
"4":"$",
"5":"%",
"6":"^",
"7":"&",
"8":"*",
"9":"(",
"0":")",
"-":"_",
"=":"+",
";":":",
"'":"\"",
",":"<",
".":">",
"/":"?",
"\\":"|"
}
//Special Keys - and their codes
var special_keys = {
'esc':27,
'escape':27,
'tab':9,
'space':32,
'return':13,
'enter':13,
'backspace':8,

'scrolllock':145,
'scroll_lock':145,
'scroll':145,
'capslock':20,
'caps_lock':20,
'caps':20,
'numlock':144,
'num_lock':144,
'num':144,
'pause':19,
'break':19,
'insert':45,
'home':36,
'delete':46,
'end':35,
'pageup':33,
'page_up':33,
'pu':33,

'pagedown':34,
'page_down':34,
'pd':34,

'left':37,
'up':38,
'right':39,
'down':40,

'f1':112,
'f2':113,
'f3':114,
'f4':115,
'f5':116,
'f6':117,
'f7':118,
'f8':119,
'f9':120,
'f10':121,
'f11':122,
'f12':123
}


for(var i=0; k=keys[i],i
//Modifiers
if(k == 'ctrl' || k == 'control') {
if(e.ctrlKey) kp++;

} else if(k ==  'shift') {
if(e.shiftKey) kp++;

} else if(k == 'alt') {
if(e.altKey) kp++;

} else if(k.length > 1) { //If it is a special key
if(special_keys[k] == code) kp++;

} else { //The special keys did not match
if(character == k) kp++;
else {
if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
character = shift_nums[character]; 
if(character == k) kp++;
}
}
}
}

if(kp == keys.length) {
callback(e);

if(!opt['propagate']) { //Stop the event
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = false;

//e.stopPropagation works only in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
return false;
}
}
}

//Attach the function with the event
if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
else ele['on'+opt['type']] = func;
}


You can now add a listener for any of you shortcut easily. Sample code:

shortcut("Ctrl+Shift+X",function() { alert("Hi there!"); });

 

© 2007 t!ps n tr!cks: March 2009



Template unik dari rohman


---[[ Skip to top ]]---