Saturday, December 10, 2022

Zkoss Framework Menggunakan jQuary - VI [ Dark and Drop ]

Dark and Drop


Source :

<?xml version="1.0" encoding="UTF-8"?>

<zk>

Drag project to other list or same list for reorder

<hbox>

<listbox id="left" height="250px" width="200px" onDrop="move(event.dragged)" droppable="true"

oddRowSclass="non-odd">

<listitem draggable="true" droppable="true" onDrop="move(event.dragged)">

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK Forge" />

</listitem>

<listitem draggable="true" droppable="true" onDrop="move(event.dragged)"> 

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK Mobile" />

</listitem>

<listitem draggable="true" droppable="true" onDrop="move(event.dragged)">

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK GWT" />

</listitem>

<listitem draggable="true" droppable="true" onDrop="move(event.dragged)">

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK JSF" />

</listitem>

<listitem draggable="true" droppable="true" onDrop="move(event.dragged)">

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK JSP" />

</listitem>

<listitem draggable="true" droppable="true" onDrop="move(event.dragged)">

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK Spring" />

</listitem>

</listbox>

<separator />

<listbox id="right" height="250px" width="200px"

oddRowSclass="non-odd" onDrop="move(event.dragged)" droppable="true"

multiple="true" >

<listitem draggable="true"  droppable="true" onDrop="move(event.dragged)">

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK" />

</listitem>

<listitem draggable="true"  droppable="true" onDrop="move(event.dragged)">

<listcell src="/img/Centigrade-Widget-Icons/Briefcase-16x16.png" label="ZK Studio" />

</listitem>

</listbox>

</hbox>

<zscript>

void move(Component dragged) {

if (self instanceof Listitem) {

if (dragged.getParent().getId().equals("right")) {

self.parent.insertBefore(dragged, self.getNextSibling());

} else {

self.parent.insertBefore(dragged, self.getNextSibling());

}

} else {

self.appendChild(dragged);

}

}

</zscript>

</zk>


Hasil :


Zkoss Framework Menggunakan jQuary - V [ Display Action ]


 Display Action


Source :

<?xml version="1.0" encoding="UTF-8"?> 

<zk>

    <zscript><![CDATA[

        int i = 0;

    ]]></zscript>

    <groupbox id="gb" closable="false" sclass="z-demo-config" width="400px">

        <caption label="ZK Logging Monitor" />

        <timer id="timer" delay="1000" repeats="true">

            <attribute name="onTimer">

                Label l = new Label("New Record Logged : " + ++i + " --> Hash : " + execution.hashCode());

                l.setAction("show: slideDown");

                if (list.getChildren().size() != 0) {

                    list.insertBefore(l, (Component) list.getChildren().get(0));

                } else {

                    l.setParent(list);

                }      

            </attribute>

        </timer>

        <vlayout id="list" style="background: #FEFFCD; overflow:scroll; overflow-x:hidden"

            action="show: slideDown;hide: slideUp" height="150px" />

    </groupbox>

    <zk>

    <zscript><![CDATA[    

        void ToggleLogging() {

            if (timer.isRunning()) {

                timer.stop();

                list.setVisible(false);

                Label result = new Label("All " + i + " Record(s)");

                result.setId("result");        

                btnCtrl.setLabel("Continue Recording");

                result.setParent(gb);

            } else {

                btnCtrl.setLabel("Stop Recording");

                result.detach();

                list.setVisible(true);

                timer.start();

            }

        }

    ]]></zscript>

    <button id="btnCtrl" label="Stop Logging" onClick="ToggleLogging()" />

</zk>

</zk>


Hasil :


Zkoss Framework Menggunakan jQuary - IV [ Login Effect ]

Login Effect


Source :

1. Buat Javascript : filescript.js

function loginSucess(wleft, wtop) {

    var w = jq('$loginWin'), b = jq('$initBtn');

    //Minimize from the login Window

    jq('

').appendTo("body").css({

        left : wleft,

        top : wtop,

        width : w.width(),

        height : w.height()

    });

    //Minimize to the init Button

    p = b.offset();

    jq('.minimize').animate({

        left : p.left + b.width() / 2,

        top : p.top + b.height() / 2,

        width : 0,

        height : 0

    }, function() {

        jq(this).remove();

    });

}

function loginFaild() { //Shake the window

    var l = jq("$loginWin").position().left;

    jq("$loginWin").animate({

        left : l - 25

    }, 50).animate({

        backgroundColor : "red"

    }, 50).animate({

        left : l

    }, 50).animate({

        left : l + 25

    }, 50).animate({

        left : l

    }, 50).animate({

        backgroundColor : "white"

    }, 50);

    jq("$loginWin").css('background-color','transparent');

}


2. Buat File : index.zul

<zk xmlns="http://www.zkoss.org/2005/zul">

    <vlayout xmlns:c="client">

    <button id="initBtn" label="Login">

        <attribute name="onClick"><![CDATA[

            if (!loginWin.isVisible())

                loginWin.setVisible(true);

            loginWin.doHighlighted();

        ]]></attribute>

    </button>

    <window id="loginWin" title="Login with zk/zk" width="300px" visible="false" minimizable="true" onOK="loginCheck()" border='normal'>

        <attribute name="onMinimize"><![CDATA[

        if (self.isMinimized())

            Clients.evalJavaScript("loginSucess(" + event.getLeft().replace("px","") + "," + event.getTop().replace("px","") + ")");

        ]]></attribute>

        <style>

        div.minimize {

            border: 1px solid #79858E;

            background: #D3E1EC;

            position: absolute;

            opacity: 0.8;      

        }

        div.loginGrid {

            border: none;

        }

        td.loginCtl {

            text-align: center;

        }

        td.loginCtl .z-label {

            color: red;        

            font-style: italic;

        }

        </style>

        <grid sclass="loginGrid">

            <columns>

                <column width="100px" />

            </columns>

            <rows>

                <row>User Name : <textbox id="name" value="zk" c:onFocus="this.select()" /></row>

                <row>Password : <textbox id="pwd" type="password" c:onFocus="this.select()"/></row>

                <row><cell sclass="loginCtl" colspan="2"><vlayout>

                    <button label="Submit" onClick="loginCheck()" width="100px"/>

                    <label id="mesg" />

                </vlayout></cell></row>

            </rows>

        </grid>

        <zscript><![CDATA[

        void loginCheck () {

            if ((name.getValue().equals("zk") && pwd.getValue().equals("zk"))) {

                mesg.setValue("");

                Clients.evalJavaScript("zk.Widget.$('$loginWin').setMinimized(true)");

                initBtn.getParent().appendChild(new Label("Login Success !! Welcome to ZK Demo!"));

            } else {

                mesg.setValue("User Name or Password Invalid!");

                Clients.evalJavaScript("loginFaild()");

            };

        }

        ]]></zscript>

    </window>

    <script type="text/javascript" src="/widgets/effects/login_effect/jquery-ui-1.8.6.custom.min.js" />

    <script type="text/javascript" src="js/customized_effect.js" />   

</vlayout>

</zk>


Hasil :



Zkoss Framework Menggunakan jQuary - III [ Upload Effect ]

 Upload Effect


Source :

1. Buat file CSS : scriptcss.css

\

/*****Panel Customize*****/

.z-panel-tl {

    height: 4px;

}

.z-panel-hl .z-panel-header {

    padding: 2px 3px 5px;

}

.z-caption-l {

    padding-left: 10px;

    font-weight: bold;

}

.z-panel-cl {

    padding-left: 1px;

}

.z-panel-cr {

    padding-right: 1px;

}

.z-panel-noborder .z-panel-btm div.footer {

    padding: 2px 0;

    border-left: 0 none;

    border-right: 0 none;

}

.z-panel .z-panel-cl .z-panel-children-noborder {

    padding-left: 5px;

    padding-right: 3px;

    background-color: #F1F9FF;

}

/*****Text Style*****/

span.name {

    font-size: 12px;

    display: block;

    width: 50px;

    text-align: right;

    font-weight: bold;

}

.attachBtn .z-toolbarbutton-cnt {

    font-weight: bold;

    color: #F25D45;

}

.newFile {

    padding-left: 10px;

}


/*****Attach Field*****/

.z-toolbar {

    background: none;

}

.z-toolbar .fileList a{

    border: 0 none;

    text-decoration: underline;

    background: none;

}

/*****Input Field*****/

.input-area {

    margin: 0 3px;

    border-top: 1px solid #ECECEC;

}

.input-area .z-textbox {

    border: 0 none;

}

/*****UPMSample1*****/

.UPMSample1 .msg span {

    height: 15px;

    padding-left:10px;

    font-size:12px;

}

.UPMSample1 .z-progressmeter {

    width: 100px;

    height: 10px;

}


/*****UPMSample2*****/

.UPMSample2 {

    background:#F4F8FF;

    border-top: 1px solid #99AABD;

    border-bottom: 1px solid #99AABD;

    font-family: tahoma,helvetica,arial,sans-serif;

    font-size: 11px;

    padding: 3px;

    width: 542px;

    color: #0F3B82;

}

.UPMSample2 a {

    color: #0366AC;

    font-weight: bold;

    cursor: pointer;

}

.UPMSample2 .float-left {

    float: left;

}

.UPMSample2 .float-right {

    float: right;

}

.UPMSample2 .clear {

    clear: both;

}


2.  Buat File  javascript   : filescript.js

zk.afterMount(function() {

    //Upload Progress Monitor Sample 1

    zk.UPMSample1 = zk.$extends(zk.Object, {

        updated : null,

        $init : function(uplder, filenm) {

            this._uplder = uplder;

            var id = uplder.id;

            //Add message and progressmeter

            zk.Widget.$(jq("$flist")).appendChild(

                new zul.box.Hlayout({

                    id: id + "_layout",

                    spacing: "6px",

                    sclass: "UPMSample1",

                    children: [

                        new zul.wgt.Html({

                            content: ['

‘, filenm,’

‘].join(“”) }), new zul.wgt.Progressmeter({ id: id + “_pgs” })] }) ); }, update : function(sent, total) { zk.Widget.$(jq(‘$’ + this._uplder.id + ‘_pgs’)).setValue(sent); }, destroy : function() { var layout = jq(‘$’ + this._uplder.id + “_layout”); if (zk.ie) { zk.Widget.$(layout).detach(); } else { layout.animate({ width: 1}, 500, function() { zk.Widget.$(layout).detach(); }); } } }); //Upload Progress Monitor Sample 2 zk.UPMSample2 = zk.$extends(zk.Object, { updated : null, $init : function(uplder, filenm) { this._uplder = uplder; var id = uplder.id, uri = ‘../widgets/effects/upload_effect/img/upload-loader.gif’, html = [‘

‘, ”, ‘

   FileName: ‘, filenm , ‘

‘, ‘

‘, msgzk.FILE_SIZE, ‘0 of ‘, ‘0‘, ‘ (0%)‘, ‘

‘].join(“”); jq(“$footer”).append(html); this.viewer = jq(‘#’ + id)[0]; }, update : function(sent, total) { jq(‘#’ + this._uplder.id + ‘-sent’).html(Math.round((total / 1024) * sent / 100) + msgzk.KBYTES); if (!this.updated) { this.updated = true; jq(‘#’ + this._uplder.id + ‘-total’).html(Math.round(total / 1024) + msgzk.KBYTES); } jq(‘#’ + this._uplder.id + ‘-percent’).html(” (” +sent + “%” + “)”); }, destroy : function() { jq(this.viewer).slideUp(1000); } }); });


3. Buat File : index.zul

<zk xmlns:c="client">

    <zscript><![CDATA[

        String dir = "/widgets/effects/upload_effect";

    ]]></zscript>

    <style src="WEB-INF/scriptcss.css" />

    <panel width="550px" framable="true">

        <caption label="ZK Mail Sender">

            <button label="Send" onClick='alert("Send!")' />

            <button label="Draft" />

            <button label="Discard" />

        </caption>

        <toolbar>

            <vlayout spacing="6px">

                <hlayout><label sclass="name" value="To : " /><textbox value="info@zkoss.org" width="480px" /></hlayout>

                <hlayout><label sclass="name" value="CC : " /><textbox value="myDearBoss@yourCompany.com" width="480px" /></hlayout>

                <hlayout><label sclass="name" value="Subject : " /><textbox value="Kindly View The Attachment" width="400px" />

                <button id="attachBtn" sclass="attachBtn" src="/img/Centigrade-Widget-Icons/PaperClip-16x16.png"

                        upload="true,maxsize=10240" label="Attach" onUpload="addItem()"/></hlayout>

                <vlayout id="flist" width="400px" sclass="fileList" />

            </vlayout>

        </toolbar>

        <panelchildren>

            <div sclass="input-area">

                <textbox multiline="true" rows="10" width="99%" >

                    <attribute name="value"><![CDATA[

Hi,

    I am writing to confirm you about the budget of annual meeting.

    Please view the detail as attachment below.


BR]]></attribute>

                </textbox>

            </div>

        </panelchildren>

        <toolbar sclass="footer">

            <div id="footer"></div>

        </toolbar>

    </panel>

    <zscript><![CDATA[

    void addItem() {

        org.zkoss.util.media.Media media = event.getMedia();

        Hlayout hl = new Hlayout();

        hl.setSpacing("6px");

        hl.setClass("newFile");

        hl.appendChild(new Label(media.getName()));

        A rm = new A("remove");

        rm.addEventListener(Events.ON_CLICK,new org.zkoss.zk.ui.event.EventListener(){

            public void onEvent(Event event) throws Exception {

                hl.detach();

            }

        });

        hl.appendChild(rm);

        flist.appendChild(hl);

    }

    ]]></zscript>

    <script type="text/javascript" src="$WEB-INF/filescript.js" />

     <script type="text/javascript"><![CDATA[

    function testUpload(viewer) {

        for (var i = 0 ; i < 5; i ++ ) {

            (function() {

                var fakeLoader = { id: 'tmp' + new Date().getTime() + i},

                        muv = viewer == 1 ?

                        new zk.UPMSample1(fakeLoader, "TempFile" + parseInt((Math.random() + 1)*10) ):

                        new zk.UPMSample2(fakeLoader, "TempFile" + parseInt((Math.random() + 1)*10) ),

                    fsize = 12345678*Math.random() + 1;

                muv.pct = 0;

                var pgs = setInterval(function() {

                    muv.pct += parseInt(Math.random()*19);

                    if (muv.pct >= 100) {

                        clearInterval(pgs);

                        muv.pct = 100;

                    }

                    muv.update(muv.pct, fsize);

                    if (muv.pct == 100)

                        muv.destroy();

                }, 678);

            })();

        }

    }

    ]]></script>

    <groupbox sclass="z-demo-config" closable="false">

        <caption label="Display Upload Progress Monitor" />

        <hlayout>

            Sample 1 :

            <button label="Show" c:onClick='testUpload(1)' />

        </hlayout>

        <hlayout>

            Sample 2 :

            <button label="Show" c:onClick='testUpload(2)' />

        </hlayout>

    </groupbox>

    <separator height="15px"/>

    <groupbox sclass="z-demo-config" closable="false">

        <caption label="Apply to File Uploader" />

        <radiogroup id="selectViewer">

            <attribute name="onCheck"><![CDATA[

                attachBtn.setUpload(self.getSelectedItem().getValue());

            ]]></attribute>

            <vlayout>

                <radio label="Default Style" value="true,maxsize=10240" checked="true" />

                <radio label="Sample 1" value="zk.UPMSample1,maxsize=10240" />

                <radio label="Sample 2" value="zk.UPMSample2,maxsize=10240" />

                <label style="font-weight:bold" value='Upload files by "Attach" button' />

            </vlayout>

        </radiogroup>

    </groupbox>

</zk>


Hasil :


Zkoss Framework Menggunakan jQuary - II [ Effect ]

 Effect 


Source :

<hlayout width="1024px">

    <separator width="150px"></separator>

    <window id="t" title="This is a Window" border="normal" width="300px">

        <vlayout style="text-align:center;">

            <image src="/widgets/effects/jQuery_effects/img/magic_wand_hat.png"></image>

            jQuery Effect Test

        </vlayout>

    </window>

    <groupbox closable="false" sclass="z-demo-config" xmlns:w='client'>

    <caption label="Effect" />

    <vlayout>

        <button height="30px" width="200px" label="Slide Down"

            w:onClick="jq(this.$f('t')).hide().slideDown(1000)" />

        <button height="30px" width="200px" label="Slide Up"

            w:onClick="jq(this.$f('t')).show().slideUp(1000)" />

        <button height="30px" width="200px" label="Fade In"

            w:onClick="jq(this.$f('t')).hide().fadeIn()" />

        <button height="30px" width="200px" label="Fade Out"

            w:onClick="jq(this.$f('t')).show().fadeOut()" />

        <button height="30px" width="200px" label="Slide Toggle"

            w:onClick="jq(this.$f('t')).slideToggle(1000)" />

    </vlayout>

</groupbox>

</hlayout>


Hasil :


Zkoss Framework Menggunakan jQuary - I [ Animation ]


Animation


Source :

<zk xmlns:w="client">
<style dynamic="true">
.ctl { border: 1px outset #777; background:#cfeaf1; margin: 2px;
margin-right: 10px; padding-left: 2px; padding-right: 2px;
display: block; width:80px; text-align:center; }
</style>

<hbox>
<groupbox mold="3d" width="150px">
<caption label="Appear" />
<label sclass="ctl" value="SlideDown"
w:onClick="jq(this.$f('t')).hide().slideDown()"/>
<label sclass="ctl" value="Appear"
w:onClick="jq(this.$f('t')).hide().fadeIn()"/>
<label sclass="ctl" value="Slowly"
w:onClick="jq(this.$f('t')).hide().fadeIn(2500)"/>
</groupbox>
<groupbox mold="3d" width="150px">
<caption label="Disappear" />
<label sclass="ctl" value="SlideUp"
w:onClick="jq(this.$f('t')).show().slideUp()"/>
<label sclass="ctl" value="Fade"
w:onClick="jq(this.$f('t')).show().fadeOut()"/>
</groupbox>
</hbox>
<div id="t" style="position:relative;zoom:1">
<groupbox>
<caption label="Dynamic Content" />
Content to show and hide dynamically.
<datebox />
</groupbox>
Description
<textbox />
</div>
</zk>

Hasil :



Menggunakan Screenshot Pada Windows & Mac OS

 


Berikut adalah cara menggunakan Screenshot :

1. Pada Windows

1.1. Menggunakan perangkat lunak Snipping Tool

Snipping Tool merupakan software bawaan windows yang digunakan untuk menangkap layar di komputer / laptop. Adapun cara untuk mengambil screenshot menggunakan Snipping Tool

1.1.1. Klik start, pilih Snipping Tool atau gunakan shortcut pada keyboard dengan tekan tombol Windows + Shift + S.


1.1.2. Setelah muncul jendela Snipping Tool, klik new dan pilih mode screenshot berdasarkan bentuk dan ukuran yang diinginkan: Free-form snip (Memotong segala bentuk), rectangular snip (Memotong persegi/persegi panjang), window snip, dan fullscreen snip (Memotong seluruh layar).

1.1.3. Jika sudah memilih salah satu mode screenshot, akan muncul kursor bertanda + yang mana bisa tarik untuk menangkap layar. 

1.1.4. Setelah itu, screenshot akan muncul. Kemudian, bisa edit dan simpan. Klik logo save untuk menyimpan, atau file > save as untuk menyimpan dengan nama baru.

1.2. Print screen pada keyboard

Jika keyboard laptop terdapat tombol print screen (PrstSc), bisa menggunakan satu tombol ini untuk screenshot seluruh layar. 

  • Buka halaman yang akan diambil gambar, kemudian tekan tombol PrtSc dan buka software Paint.
  • Setelah Paint terbuka, gunakan tombol ctrl + v agar tangkapan layar dapat muncul.
  • Di Paint, bisa menyunting, seperti memotong screenshot menggunkan crop dan menambahkan objek lainnya.
  • Klik file > save atau save as untuk menyimpan screenshot. 

1.3. Alt + PrtSc pada keyboard 

  • Tekan tombol Alt + PrtSc, setelah itu buka aplikasi Paint. 
  • Saat jendela Paint telah muncul, gunakan ctrl + v agar tangkapan layar muncul. 
  • Setelah tahap edit, simpan screenshot tersebut dengan file > save atau save as. 

1.4. Windows key + PrtSc

  • Tekan tombol Windows key + PrtSc, kemudian buka aplikasi Paint. 
  • Jika Paint sudah terbuka, tekan tombol ctrl + v untuk menampilkan screenshot. 
  • Simpan tangkapan layar yang sudah diedit dengan file > save atau save as.


2. Pada Mac OS

Untuk screenshot di laptop / komputer dengan sistem operasi Mac OS, terdapat 3 cara :

2.1. Command + shift + 3

Jika ingin screenshot seluruh layar yang ada di monitor, bisa menggunakan tombol command + shift + 3 secara bersamaan. 

Jika ingin melakukan editing seperti crop dan penambahan objek, saat membuka tangkapan gambar, klik tanda berikut. Untuk memotong gambar, tarik kursor bertanda + , lalu klik crop.

2.2. Command + shift + 4

Jika ingin screenshot dengan ukuran halaman yang diinginkan, gunakan tombol command + shift + 4, tarik garis sesuai detail pada tangkapan gambar yang ingin dipotong. Setelah itu, screenshot akan tersimpan di folder desktop. 

2.3. Command + shift + 5

Penggunaan tombol ini akan menampilkan banyak fitur screenshot dan merekam layar tanpa harus download aplikasi. Nantinya, tampilan akan muncul seperti ini. Kamu bisa atur dan ketahui ukuran potongan gambar layar. Berikut fitur yang bisa kamu gunakan saat menggunakan command + shift + 5:

  • Capture the entire screen, untuk memotong keseluruhan gambar yang ada di layar monitor. 
  • Capture a window, untuk menangkap layar pada jendela yang sedang dibuka.
  • Capture a portion of screen, untuk menangkap detail gambar yang diinginkan dengan ukuran tertentu.
  • Record the entire screen, untuk merekam seluruh tampilan monitor. 
  • Record the portion of the screen, untuk merekam dan memperlihatkan detail pada sebagian layar. 

Jika menggunakan tombol ini, bisa melakukan pengaturan saat mengambil screenshot dan merekam layar pada menu options. Setelah melakukan capture dan record, file akan tersimpan di folder desktop. 

Memunculkan Simbol & Emoji Pada OS Mac

  Memunculkan Simbol & Emoji  1. Buka aplikasi Pages / Notes pada Macbook. 2. Klik pada Menubar Edit --> Pilih Emoji and Symbols a...