Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

23 Mart 2010 Salı

SVN Kaynakları

SVN Windows Client
Buradan svn nin dos istemcisini yükleyebilir svn.exe ile örneğin otomatik UPDATE'ler çalıştırabilirsiniz.
cmd /c svn up <path>
path: c:\website
olabilir


Komut satırı aracıyla nelere yapabileceğinizi buradan görebilirsiniz.



ANKHSVN


Visual studio ile entegre bir program olan ankhsvn'yi kullanabilirsiniz. Buradan indirebilirsiniz.





SVN-MONITOR


Bedava bir uygulama olan SVN-Monitor de tavsiye edeceğim güzel uygulamalardandır. Ve çokta kullanışlıdır.




SVN AUTOCOMMIT


Çok deneyememekle birlikte SVN AUTOCOMMIT uygulaması hem kullanımı çok kolay hemde hafif bir uygulama olarak belirlediğiniz klasörü otomatik commitliyor.




VISUAL SVN


Yine VS ya uyumlu benimde çok sevdiğim ama ücretli olan :( bir uygulamada Visual SVN.

Demo videosu için buraya tıklayın.


svn: This client is too old to work with working copy 'D:\CemT\PublishFolder' lease get a newer Subversion client?


Collab.net adresinden en uygun komut satırı araçlarını indirebilirsiniz.

19 Mart 2010 Cuma

Javascript'te static ve dinamik sınıflardan nesne yaratılması


--------------------------------------------------------------------------- STATIC
function ToDo(){

}

ToDo.Liste = function(){

}

***** Kullanımı ******
var toDo = new ToDo();

// Çünkü Liste fonksiyonu ToDo sınıfından olacak nesneye bağlı değil, 
// ToDo içindeki STATIC olan Liste sınıfına bağlıdır 
var liste = new ToDo.Liste(); 

--------------------------------------------------------------------------- DYNAMIC
function ToDo(){

  this.Liste = function(){  //public bir sınıf ya da fonksiyon olarak çağırılabilir

  }

}

***** Kullanımı ******
var toDo = new ToDo();
var liste = new toDo.Liste();

15 Mart 2010 Pazartesi

Ayakkabı sıkıyorsa 'daha sonra genişler' diyerek almayın

İnsan ayağının hacmi gün boyunca genişler, bu nedenle ayakkabınızı öğleden sonra alın.
Bir çift ayakkabının tekleri arasında görünüm, şekil, işçilik, renk ve boyut farkı olmamalı.
Ayakkabı etiketine bakarak yüz, astar, iç-dış taban yapımında kullanılan malzemeler hakkında bilgi edinilmeli.
Ayakkabı seçerken ilk kriter model ve renkten önce, rahatlık olmalı. Ayağın anatomik yapısına uymayan, büyük ya da sıkan ayakkabı alınmamalı.
En uzun parmak ile ayakkabı ucu arasında 0,5-1,0 cm boşluk olmalı. Ayakkabı rahatsız edici derecede sıkı ise kesinlikle zamanla genişler diye düşünüp satın alınmamalı.
Ayakkabının her ikisi de mutlaka giyilip yürüyerek denenmeli.
Dikiş uçları bitim yerlerinin sağlam olmasına, dikiş hatalarının bulunmamasına dikkat edilmeli.
Ayakkabının ayakla temas eden kısımlarında sentetik malzeme kullanılıp kullanılmadığına bakılmalı. Çünkü sentetik malzemeler hava geçirmez ve hava geçirmeyen malzemeler ayak sağlığı için zararlıdır.
Yazın tabanı kösele, kışın ise tabanı sentetik (PVC, termoplastik, kauçuk gibi) maddelerden üretilmiş, ayakkabı yüzü yumuşak deriden yapılmış olan ayakkabılar tercih edilmeli.
Nubuk, süet gibi çabuk kirlenen ya da boyası çabuk soyulan malzemelerden üretilmiş ayakkabıları alırken ve kullanırken iklim şartları göz önünde bulundurulmalı.
Çocuk ayakkabılarının arkalarının sert, ayakkabı yüzünün esnek olmasına, burun bölümünün parmakları sıkmamasına ve dış taban malzemesinin yeri sağlam tutan, kaymayan ve esnek bir malzemeden yapılmış olmasına dikkat edilmeli.

Giyecek alırken nelere dikkat edilmeli?

Öncelikle hangi giyeceklere ihtiyaç olduğu doğru tespit edilmeli ve mevcut giyecekler gözden geçirilmeli.
Ne tür giyeceklerin eksik olduğunu düşünüp gerçek ihtiyaçlar tespit edilerek önem ve öncelik sırasına göre listelenmeli.
İhtiyaç olarak tespit edilen giyeceklerin renk, model, kumaş cinsi vb. özellikleri belirlenmeli. Stil ve model belirlemede yaşam biçimi ve en sık giydiğiniz giyecekleri düşünmek size yardımcı olabilir.
Daima sade ve çeşitli faaliyetler için kolayca kullanılabilecek kıyafetler seçilmeli, aşırı derecede modaya bağlı ürünler tercih edilmemeli.
Satın alınacak giyeceklerin renk kombinasyonlarına dikkat edilerek her türlü renkle kolayca uyum sağlayabilecek olanlar yeğlenmeli.
Kıyafetlerin farklı mevsimlerde ve uzun süre giyilebilen, kolayca yıkanabilen, dayanıklı, buruşmayan kumaştan üretilmiş olmasına dikkat edilmeli. İç giyimde ise kolayca nem çeken, doğal liflerden üretilen ürünler tercih edilmeli.
Giyecekleri satın almadan önce çeşitli mağazaları dolaşmaya, fiyat, kalite, çeşit, model ve renk açısından karşılaştırma yapmaya ve en uygun yerden alışveriş yapmaya çaba gösterilmeli.
Giyimde mevsim sonu indirim dönemleri takip edilmeli.
Ölçü ve beden yönünden kesin bilgilere sahip değilseniz, satın alınacak giyecek mutlaka denenmeli.
Giyeceklerde kumaşı, dikişleri, renk tonları ile birlikte yan ürünler olan düğme, fermuar, astar vb. kısımları dikkatle kontrol edilmeli, yırtık, sökük, tüylenme, renkte ton farkı olmamasına özen gösterilmeli.
Satın alınacak kıyafetlerde bilgi verici etiketler incelenerek kumaşın lif kompozisyonu ile uygulanacak bakım ve temizlik yöntemleri satın almadan önce mutlaka öğrenilmeli.
Giyim alışverişlerinde mutlaka satış fişi veya fatura alınıp saklanmalı.

Su tasarrufu

Sebze ve meyveler su dolu bir kapta biraz bekletilip yıkanırsa daha az su tüketilir.
Buzluktaki yiyeceklerin ve diğer donmuş gıdaların buzunu eritmek için su kullanmayın.
Bahçe sulamaları, buharlaşmanın az olduğu sabah ya da akşam üstü yapılmalı.

MOBİLYA NASIL ALINIR?

Mobilyaların yapımında kullanılan ağacın cinsi ve diğer malzemelerin özellikleri, birleştirme yerlerinin sağlam olması, boya ve cilasının düzgün olması da mobilya hakkında karar vermede önemli faktörler olarak dikkate alınmalı.
Sipariş verilerek yaptırılan mobilyalar için önceden mutlaka sözleşme yapılmalı.
Mobilyadaki döşemelik malzemenin uzun süre dayanan, kolay yanmayan, terletmeyen ve kolay temizlenebilen özellikte olması tercih edilmeli.
Alınan mobilyanın nakliye, kurulum ve montaj masraflarının fiyata dahil olup olmadığı satın alınmadan önce öğrenilmeli.
Satın alınan mobilyada garanti belgesi, Türkçe tanıtma ve kullanma kılavuzu ve satış sonrası hizmet verecek servis istasyonlarının listesi istenilmeli.
Mobilyanın insan hayatındaki önemi dikkate alınarak, insanı bedenen ve ruhen dinlendirecek bir mobilya seçimi yapılmalı

İkinci el araç alırken...

Araçlarda rüzgârlık, üst bagaj ve otomatik transmisyon gibi aksesuar ve parçalar daha fazla yakıt tüketimine neden olacağından, araç seçerken bunlara bakılmalı. Gerçekten ihtiyaç varsa, bu aksesuarlar takılmalı.

Araçta standart olarak bulunması gereken emniyet kemeri, klima ve hava yastığı gibi elemanlardan başka hangi ekstra güvenlik ekipmanlarının bulunduğunun öğrenilmesi, sağlık ve güvenlik açısından önemli.
Satın alınacak aracın fiyatı iyi incelenmeli. Peşin alımlarda indirimlerin olup olmadığı, araçta opsiyonel aksesuarların aracın fiyatını ne şekilde etkilediği, ayrıca servis, bakım, kasko, Motorlu Taşıtlar Vergisi gibi aracın kullanım maliyetleri göz önünde bulundurulmalı.
Satın alınacak araçlarda az yakıt tüketen ve karbondioksit emisyonu düşük araçlar tercih edilmeli.
Benzinli araçlarda yakıt sistemi enjeksiyonlu olmalı. Enjeksiyonu, çok noktalı tercih edilmeli.
Ülke genelinde satış sonrası servis ağı yaygın olan ve yeterli yedek parça stoku bulunan araçlar tercih edilmeli.

Einstein’dan 10 hayat dersi


Ref:http://fotohaber.ekolay.net/4/17962/Einstein’dan--10-hayat-dersi.aspx?ver=67&rid=934B0A5DC512486D8766D4DEE631C891

1. Merakınızın peşinden gidin

‘Benim özel bir yeteneğim yok. Yalnızca tutkulu bir meraklıyım.’

Sizin merakınızı çeken nedir? Neyi en çok merak ediyorsunuz? Benim merak ettiğim neden bazı insanların başarılı olup bazılarının olamadığıdır. Bu yüzden yıllarca başarı üzerine çalıştım. Merakınızın peşinden giderseniz başarıya ulaşırsınız.

2. Azim paha biçilmezdir

‘Çok zeki olduğumdan değil, sorunlarla uğraşmaktan vazgeçmediğimden başarıyorum.’

Belirlediğiniz yolun sonuna ulaşacak kadar sabırlı mısınız? Posta pullarının gideceği yere varasıya kadar mektuba yapışıp kalmasından ötürü çok değerli olduğu söylenir. Posta pulu gibi olun ve başladığınız işi bitirin.

3. Bugüne odaklanın

‘Güzel bir kızı öperken düzgün araba kullanan birisi, öpücüğe hak ettiği dikkati vermiyor demektir.’

İki atı aynı anda süremezsiniz. Bir şeyler yapabilirsiniz ama her şeyi yapamazsınız. Şimdiye odaklanın ve bütün enerjinizi şu anda yaptığınız işe verin.

4. Hayal gücü güç verir

‘Hayal gücü her şeydir. Sizi bekleyen güzelliklerin önizlemesi gibidir. Hayal gücü bilgiden daha önemlidir.’

Hayal gücünüz geleceğinizi belirler. Einstein şöyle der: ‘Zekanın gerçek göstergesi hayal gücüdür, bilgi değil’. Bu yüzden hayal gücünüzün hantallaşmasına izin vermeyin.’

5. Hata yapın

‘Hiç hata yapmamış bir insan yeni bir şey denememiş demektir.’

Hata yapmaktan korkmayın. Eğer nasıl okuyacağınızı bilirseniz hatalar sizi daha iyi bir konuma getirebilir. Başarılı olmak istiyorsanız yaptığınız hataları üçe katlayın.

6. Anı yaşayın

‘Ben geleceği hiç düşünmem, ne de olsa gelecektir.’

Geleceği ayarlamanın tek yolu olabilidiğiniz kadar şimdide olmaktır. Şu anda dünü ya da yarını değiştiremezsiniz. Önemli olan tek an şimdidir.

7. Değer yaratın

‘Başarılı olmaya değil, değerli olmaya çalışın.’

Zamanınızı başarılı olmak için harcamayın, değerler yaratın. Eğer değerli olursanız başarı kendiliğinden gelecektir.

8. Farklı sonuçlar beklemeyin

‘Delilik: Aynı şeyleri tekrar tekrar yapıp farklı sonuçlar beklemek.’

Hergün aynı rutinde yaşayarak farklı görünmeyi bekleyemezsiniz. Hayatınızın değişmesini istiyorsanız kendinizi değiştirmelisiniz.

9. Bilgi deneyimden gelir

‘Bilgi malumat değildir. Bilmenin tek yolu deneyimlemektir.’

Bir konuyu tartışabilirsiniz ama bu size sadece felsefi bir anlayış kazandırır. Bir konuyu bilmek istiyorsanız onu deneyimlemelisiniz.

10. Kuralları öğrenin, daha iyi oynayın

‘Oyunun kurallarını öğrenmek zorundasınız. Böylece herkesten iyi oynayabilirsiniz.’

Yapmanız gereken iki şey var. Birincisi oynadığınız oyunun kurallarını öğrenmek. İkincisi ise oyunu herkesten iyi oynamayı istemek. Bu iki şeyi yaparsanız başarı sizinle olur!

9 Mart 2010 Salı

Javascript ile Select içindeki seçili option elementinin sırasını değiştirmek



<html>
<head>
<script>

function moveItem(i){
var b,o=document.getElementById("s1"),p,q;
if(i==0 && o.selectedIndex > 0){
p = o.options[o.selectedIndex];
q = o.options[o.selectedIndex - 1]
o.removeChild(p);
o.insertBefore(p,q);
}
if(i==1 && o.selectedIndex < o.options.length-1){
b = o.selectedIndex < o.options.length - 2;
p = o.options[o.selectedIndex];
if(b) q = o.options[o.selectedIndex + 2]
o.removeChild(p);
if(b) o.insertBefore(p,q); else o.appendChild(p);
}
}

</script>
</head>
<body>
<table>
<tr>
<td rowspan=2>
<select id="s1" size=3>
<option>One
<option>Two
<option>Three
</select>
</td>
<td>
</tr>
<tr>
<td>
</tr>
</table>
</body>
<script>
</script>
</html>

Javascript ile Class yapımının 3 yolu

Ref:http://www.phpied.com/3-ways-to-define-a-javascript-class/

1. Yol : Fonksiyonlar kullanılarak oluşturmak.

function Apple (type) {
this.type = type;
this.color = "red";
this.getInfo = getAppleInfo;
}

function getAppleInfo() {
return this.color + ' ' + this.type + ' apple';
}


Nesne türetmek için:

var apple = new Apple('macintosh');
apple.color = "reddish";
alert(apple.getInfo());




1.1. Yol: Function içinde dahili function ile metot tanımı

function Apple (type) {
this.type = type;
this.color = "red";
this.getInfo = function() {
return this.color + ' ' + this.type + ' apple';
};
}





2. Yol : JSON modeli. Tabii bundan nesne üretilemez.

var apple = {
type: "macintosh",
color: "red",
getInfo: function () {
return this.color + ' ' + this.type + ' apple';
}
}



Kullanımı:

apple.color = "reddish";
alert(apple.getInfo());





3. Yol :

var apple = new function() {
this.type = "macintosh";
this.color = "red";
this.getInfo = function () {
return this.color + ' ' + this.type + ' apple';
};
}


Kullanımı:

apple.color = "reddish";
alert(apple.getInfo());

ASP.NET Checkbox tan Text değerini JQuery ile okumak


$('input:checkbox').each(function() {

if (this.checked) {

alert($("label[for='" + $(this).context.id + "']")[0].innerHTML);
resim = $("label[for='" + $(this).context.id + "']")[0].innerHTML;
}

tumResimler += resim;
});

JQuery .each

Ref: http://api.jquery.com/jQuery.each/


$.each($("#divBulunanResimler div"), function(index, div) {
alert($(div).html());
$(div).attr.hide();
});

$.each([52, 97], function(index, value) {
alert(index + ': ' + value);
});


var map = {
'flammable': 'inflammable',
'duh': 'no duh'
};
$.each(map, function(key, value) {
alert(key + ': ' + value);
});

5 Mart 2010 Cuma

Java ve Event Handling

Kaynaklar:
http://www.devshed.com/c/a/Java/Event-Handling-In-Java/
http://scatteredcode.wordpress.com/2011/11/24/from-c-to-java-events/

In life, you encounter events that force you to suspend other activities and respond to them immediately. In Java, events represent all activity that goes on between the user and the application. Java's Abstract Windowing Toolkit (AWT) communicates these actions to the programs using events.


You are leaving for work in the morning and someone rings the doorbell….

That is an event!

In life, you encounter events that force you to suspend other activities and respond to them immediately. In Java, events represent all activity that goes on between the user and the application. Java’s Abstract Windowing Toolkit (AWT) communicates these actions to the programs using events. When the user interacts with a program let us say by clicking a command button, the system creates an event representing the action and delegates it to the event-handling code within the program. This code determines how to handle the event so the user gets the appropriate response.

In today’s tutorial we are going to learn event-driven programming, the event model of Java, and the different ways in which you can handle events.

Now lets taste our first cup of Java…

Components of an Event: Can be put under the following categories.

1. Event Object: When the user interacts with the application by clicking a mouse button or pressing a key an event is generated. The Operating System traps this event and the data associated with it. For example, info about time at which the event occurred, the event types (like keypress or mouse click). This data is then passed on to the application to which the event belongs. In Java, events are represented by objects, which describe the events themselves. And Java has a number of classes that describe and handle different categories of events.

2. Event Source: An event source is the object that generated the event. Example if you click a button an ActionEvent Object is generated. The object of the ActionEvent class contains information about the event.

3. Event-Handler: Is a method that understands the event and processes it. The event-handler method takes the Event object as a parameter. Java uses Event-Delegation Model :with JDK1.1 onwards; you can specify the objects that are to be notified when a specific event occurs. If the event is irrelevant, it is discarded. The four main components based on this model are Event classes, Event Listeners, Explicit event handling and Adapters. Let us take a closer look at them one by one.

Event Classes: The EventObject class is at the top of the event class hierarchy. It belongs to the java.util package. While most of the other event classes are present in java.awt.event package. The getSource() method of the EventObject class returns the object that initiated the event. The getId () method returns the nature of the event. For example, if a mouse event occurs, you can find out whether the event was click, a press, a move or release from the event object. AWT provides two conceptual types of events: Semantic and low-level events.

Semantic events are defined at a higher-level to encapsulate the semantics of user interface component’s model. Now let us see what are the various semantic event classes and what they generate:

• An ActionEvent object is generated when a component is activated

• An AdjustmentEvent Object is generated when scrollbars and other adjustment elements are used.

• A TextEvent object is generated when text of a component is modified.

• An ItemEvent is generated when an item from a list, a choice or checkbox is selected.

Low-Level Events is one that represents a low-level input or windows-system occurrence on a visual component on the screen. The various low-level event classes and what they generate are as follows:

• A ContainerEvent Object is generated when component are added or removed from container.

• A ComponentEvent object is generated when a component is resized, moved etc.

• A FocusEvent object is generated when component receives focus for input.

• A KeyEvent object is generated when key on keyboard is pressed, released etc.

• A WindowEvent object is generated when a window activity, like maximizing or close occurs.

• A MouseEvent object is generated when a mouse is used.

• A PaintEvent object is generated when component is painted.

Event Listeners: An object delegates the task of handling an event to an event listener. When an event occurs, an event object of the appropriate type (as illustrated below) is created. This object is passed to a Listener. A listener must implement the interface that has the method for event handling. A component can have multiple listeners, and a listener can be removed using removeActionListener () method. Next question in your mind must be what is an interface?. An Interface contains constant values and method declaration. The difference between classes and interface is that the methods in an interface are only declared and not implemented, that is, the methods do not have a body. What is the Need for interface? Are interfaces are used to define behavior protocols (standard behavior) that can be implemented by any class anywhere in the class hierarchy. The java.awt.event package contains definitions of all event classes and listener interface. The semantic listener interfaces define by AWT for the above mentioned semantic events are:

• ActionListener

• AjdustmentListener

• ItemListener

• TextListener

The low-level event listeners are as follows:

• ComponentListener

• ContainerListener

• FocusListener

• KeyListener

• MouseListener

• MouseMotionListener

• WindowsListener.



ActionEvent using the ActionListener interface: The following illustrates the usage of ActionEvent and ActionListener interface in a Classic Java Application (Example I).

//Save the file with MyEvent.java file and compile it using javac, 
//once complied errors free execute it.
Import javax.swings.*;
Import java.awt.event.*;
Public class MyEvent extends JFrame
{
JButton b1;
// Main Method
Public static void main (String arg[])
{
MyEvent event = new MyEvent();
}
//Constructor for the event derived class
Public MyEvent()
{
Super(“Window Title: Event Handling”);
b1 = new Jbutton(“Click Me”);
//place the button object on the window
getContentPane().add(“center”,b1);
//Register the listener for the button
ButtonListener listen = new ButtonListener();
b1.addActionListener(listen);
//display the window in a specific size
setVisible(true);
setSize(200,200);
}
//The Listener Class
Class ButtonListener implements ActionListener
{
//Definition for ActionPerformed() method
Public void ActionPerformed(ActionEvent evt)
{
JButton source = (JButton)evt.getSource();
Source.setText(“Button Has Been Clicked, Guru!”);
}
}
}
How does the above Application work?


• The execution begins with the main method.

• An Object of the MyEvent class is created in the main method.

• Constructor of the MyEvent class is invoked.

• Super () method calls the constructor of the base class and sets the title of the window as given.

• A button object is created and placed at the center of the window.

• A Listener Object is created.

• The addActionListener() method registers the listener object for the button.

• SetVisible () method displays the window.

• The Application waits for the user to interact with it.

• When the user clicks on the button labeled “Click Me”: The “ActionEvent” event is generated. Then the ActionEvent object is created and delegated to the registered listener object for processing. The Listener object contains the actionPerformed() method which processes the ActionEvent In the actionPerformed() method, the reference to the event source is retrieved using getSource() method. The label of the button is changed to “Button has been clicked, Guru!” using setText() method.

Tools of the Trade: Since the ButtonListener class has been declared under MyEvent class. Therefore ButtonListener class is an inner class.

For those of you folks who are more into using Java Applets here is easy sample which works.Type in the following code (Example 2) and save it as ButtonEvent.java and the compile using javac and view it using appletviewer. A short cut to avoid compiling a java file and html file separately you can enclose the applet tag normally containing applet code, height, width, param tags etc. within /* and */. Then compile as one single file, because the HTML tag will be read as html automatically. And when compiled error free run using Appletviewer tag.

/*
<Applet code = "ButtonEvent.class" height = 400 width = 400>
</applet>
*/
Import java.awt.*;
Import java.awt.event.*;
Import java.applet.Applet;
Public class ButtonEvent extends Applet implements ActionListener 
{
Private Button b;
Public void init() {
b = new Button("Click me");
b.addActionListener(this);
add (b);
}
Public void actionPerformed (ActionEvent e) {
// If the target of the event was our Button
// In this example, the check is not 
// Truly necessary as we only listen to
// A single button
If (e.getSource () == b) {
getGraphics().drawString("OUCH Buddy",20,20);
}
}
}
The above sample code pretty much does the same thing
as Example I only the applet starts with the init() method first the button is added using the add() method and is registered with ActionListener(). Once the user clicks it, The event is trapped using the getSource() and delegated to the appropriate listener. The getGraphics() method of the image class is used along with drawString() method to draw the text given by the specified string.

Mouse Events, MouseListener and MouseMotionListener:

These are generated when a mouse is moved, clicked, pressed and released etc. The MouseEvent class represents these events as six constant values and has methods to get the co-ordinates at which a mouse event occurred. The mouse move and mouse drag are treated differently from the rest four mouse pressed, mouse released, mouse entered and mouse exited. Hence there are two types of mouse event listeners- MouseListener and MouseMotionListener.

The following code illustrates the usage of mouse event listeners. Watch out for messages on the status line of applet as and when the user performs a mouse event. (Example 3 also shows the co-ordinates at which the event occurred.

// Example 3: MouseEvents & MouseListener
/*
<Applet code = "mouseEvent.class" height= 400 width = 400 >
</applet>
*/
Import java.awt.*;
Import java.awt.event.*;
Import javax.swing.*;
Public class mouseEvent extends JApplet implements MouseListener, MouseMotionListener
{
Public void init()
{
addMouseListener(this);
addMouseMotionListener(this);
}
Public void mouseClicked(MouseEvent e)
{
showStatus("Mouse has been clicked at " + e.getX()+ "," + e.getY());
}
Public void mouseEntered(MouseEvent e)
{
showStatus("Mouse has been Entered at " + e.getX()+ "," + e.getY());
// For loop:to make sure mouse entered is on status bar for a few sec
For (int i= 0; i<1000000; i++);
} 
Public void mouseExited (MouseEvent e)
{
showStatus ("Mouse has been Exited at " + e.getX()+ "," + e.getY());
}
Public void mousePressed(MouseEvent e)
{
showStatus ("Mouse pressed at " + e.getX()+ "," + e.getY());
}
Public void mouseReleased(MouseEvent e)
{
showStatus("Mouse released at " + e.getX()+ "," + e.getY());
}
Public void mouseDragged(MouseEvent e)
{
showStatus("Mouse dragged at " + e.getX()+ "," + e.getY());
}
Public void mouseMoved(MouseEvent e)
{
showStatus("Mouse moved at " + e.getX()+ "," + e.getY());
}
}
Since the applet implements MouseListener and
MouseMotionListener it has to provide for the functionality of all their methods. Observe the mouseEntered() method has a small loop to ensure the mouse entered message remains on the status bar for a while. {mospagebreak title=Key Frienldy Codes} Keyboard Events and KeyListener: They are generated on pressing or releasing a key. The KeyEvent class contains constants to represent the keys pressed or typed. The event listener corresponding to these types of event is the KeyListener.

The following example puts forth key event handling. The applet contains a label and a text field. The recently typed in character in the text field is displayed in the status bar. Example 4.

// Key events and KeyListener.
/*
<applet code = "keyTest.class" width = 400 height = 400>
</applet>
*/
Import java.awt.*;
Import java.awt.event.*;
Import java.applet.Applet;
Public class keyTest extends Applet implements KeyListener
{
Public void init()
{
Label lab = new Label ("Enter Characters :");
add(lab);
TextField tf = new TextField(20);
add(tf);
tf.addKeyListener(this);
}
Public void keyPressed(KeyEvent e)
{}
Public void keyReleased(KeyEvent e)
{}
Public void keyTyped(KeyEvent e)
{
showStatus(" Recently typed characters are : " + e.getKeyChar());
}
}
Here the text field delegates its key events to the
applet. The add() method adds the components Label and TextField to the applet.

A quick recap: Every time the user types a character or pushes a mouse button, an event occurs. Any object can be notified of the event. All it has to do is implement the appropriate interface and be registered as an event listener on the appropriate event source. Swing components can generate many kinds of events.

Each event is represented by an object that gives information about the event and identifies the event source. Event sources are typically components, but other kinds of objects can also be event sources. Each event source can have multiple listeners registered on it. Conversely, a single listener can register with multiple event sources.

In the next part of the tutorial we will see about Explicit Event-handling and adapters.

1 Mart 2010 Pazartesi

C# Event

Delegate ile ilgili makalemi okuyarak buradan okumaya devam ederseniz dünya daha güzel bir yer olabilir ;)

Event meselesini futboldan örnekle anlatmaya çalışayım.
Örneğin bir FutbolOyuncusu sınıfını düşün. Sahaya bu sınıftan 22 tane nesne yaratarak süreceksin. Her oyuncunun özellikleri, yeteneği, hızı, gücü farklı olacak.
- Golcü nesnesi(mesela Mario Gomez :) pozisyona girecek ve şut atmayı düşünecek ve keyfi bir hızla topu tepecek.
- Şut atıldığında bizim bir olayı tetiklememiz gerekiyor ki, diğer oyuncular buna göre pozisyon alsınlar.
- Ancak bu olay ayrıca Gomez'in o anda kaç km hızla topa vurduğu, açısını, zamanlamasını OnShoot olayına geçirmesini gerektirebilir.
- Olayın parametrelerine göre(hız, zaman, açı vs.) göre kaleci şutu görebilecek, topa uzanabilecek, tutacak ya da tokatlayacak.
- Olayın peşine, diğer nesneler(kaleci, rakip savunma, hücumcu oyuncular vs.) bir cevap üretebilmek için bu olayı takip ediyor olabilirler(bu olaya abone olabilirler).
- Ya da Mario atamaz diye hiç bir eylem içinde bulunmayabilir diğerleri.

* İşte OnShoot bizim EVENT'imiz(olayımız) anlaştık mı?
* OnShoot olayı anında bazı parametrelerimiz açığa çıkıyor (hız, açı, zamanlama vs.) bunlarda olay argumanları(Event Arguments).

Kod yazalım ve içindeki yorumlarımıza bakarak ilerleyelim:
using System;
using System.Data;
using System.Runtime;

namespace CSharp_Orneklerim.Delegate_Event
{
    public class Event_01
    {
        public static void Calis()
        {
            Topcu kaleciMuslera = new Topcu() { Adi = "Muslera" };
            Topcu cenkGonen = new Topcu() { Adi = "Cenk Gönen" };

            // Olaylara abone olacak nesnelerin fonksiyonlarını ekleyelim
            cenkGonen.OnShoot += (sutuVuranOyuncu, sutunOzelligi) =>
            {
                // Muslera hiçbir topu tutamasın ve top ağlarla buluşsun.
                if (!kaleciMuslera.Yakalamayi_Dene(sutunOzelligi))
                {
                    // TopunDurumu türünden dönecek sonucu 
                    // hakem gol olarak ilan edecek
                    Console.WriteLine("Muslera > - Ah Vah ah vah...");
                    return new TopunDurumu()
                           {
                               x1 = -2,
                               x2 = -2,
                               y1 = -2,
                               y2 = -2,
                               Hizi = 0
                           };
                }
                else
                {
                    // kaleci topu tekmeyle sahanın ortasına uzaklaştırsın
                    return new TopunDurumu()
                    {
                        x1 = 0,
                        y1 = 12,
                        x2 = 20,
                        y2 = 15,
                        Hizi = 20
                    };
                }
            };

            // herkes pozisyonunu aldı ve golcümüz ceza sahasına giriyor
            cenkGonen.Ceza_Sahasina_Topla_Gir();
        }
    }

    public partial class Topcu
    {
        /*
         * Çeşitli özellikleri olabilir
         * tackle : topu ayağından almak
         * speed : hız
         * size : boyut
         */
        public string Adi;

        /// <summary>
        /// Tüm oyuncular ceza sahasına girebilir(savunma, hücum vs.)
        /// Ancak davranışları elbette farklıdır. 
        /// Örneğin rakip hücumcu girerse kaleyi görüp şut çekerken,
        /// kendi ceza sahasına giren savunmacı uzaklaştırmak isteyecektir.
        /// Bu yüzden bu metodu virtual yapalım ki, Topcu sınıfını miras alacak başka sınıflar
        /// kendi isteklerine göre ezebilsinler.
        /// </summary>
        public virtual void Ceza_Sahasina_Topla_Gir()
        {
            /** 
             * Oyuncu topu ceza sahasına sürsün ve kaleyi görsün.
             * Şut çekecek ve bizim olayımız tetiklenecek
             * this oyuncumuz şutu çekti
             */
            Shoot shoot = new Shoot()
                          {
                              Aci = 60, // Topa 60 dereceyle 
                              Hiz = 50, // 50 km hızda 
                              Zaman = DateTime.Now, // şimdi vursun
                          };

            TopunDurumu durumu = veShoooot(shoot);
            // Şut atıldığında bir olayı(event) tetiklemek istiyoruz. 
            // Böylece bu olayı dinleyen tüm abonelere şut ile ilgili bilgi verebilelim
            // Görünüşe göre veShoooot metodu bu işi yapacak.
            // veShoooot metodu Shoot türünden bir değişken alsın ve topun durumunu dönsün
            // Bu metodu birazdan tanımlayacağız 
            // Ancak önce oluşturacağımız metodun dönen tipi ve parametrelerine bakalım
            //
            // 1 Parametre geçireceğiz bu metoda Shoot tipinde bir değişken
            // ve topun son durumu dönecek: {koordinatı, yönü, hızı} 
            //
            // Demekki Shoot ve TopunDurumu diye iki sınıfımızı yazmalıyız
        }
    }

    // 1. Shoot sınıfı
    public partial class Shoot
    {
        public int Aci, Hiz;
        public DateTime Zaman;
    }

    // 2. Topun durumu
    public class TopunDurumu
    {
        // iki nokta bir vektör tanımlar. konumu ve Yönünü bulduk.
        public int x1, y1, x2, y2, Hizi;
    }

    // 3. OnShoot olayı için method handler
    // OnShoot olayı(eventi) için bir delegate tipinde metot tutucu tipine ihtiyacımız var
    public delegate TopunDurumu Del_Donussuz_Shoot_Parametreli(Topcu _topcu, Shoot _shoot);

    // 4. Topcu sinifina OnShoot olayi tanımlama vakti geldi
    // OnShoot eventini Topcu sınıfına eklemeliyiz ki, tetikleyebilelim
    public partial class Topcu
    {
        // event tanımlamaları sınıf içinde yapılır ve ancak sınıftan tetiklenebilirler
        // event değikenlerine doğrudan bir atama(eventDegiskeni = null) yapılamaz
        // ancak += ya da -= ile atama yapılabilir
        public event Del_Donussuz_Shoot_Parametreli OnShoot;
        
        // Geldik OnShoot olayımızı tetikleme işini yapacak metodumuza.
        // Metodumuz event tetikleyecek. Event ancak sınıfın içinden tetiklenebilir, nesneden değil!
        // bu yüzden public erişim belirleyicisini kullanamayız.
        // Topcu sınıfından türetilen tiplerin de bu metodu çağırması gerekecek 
        protected virtual TopunDurumu veShoooot(Shoot shoot)
        {
            // OnShoot bizim tetikleyeceğimiz olayımız olacak(event)
            // OnShoot olayının tanımlandığı yerde varsayılan bir değer yok! Null kontrolü yapalım ! 
            if (OnShoot == null)
            {
                throw new NoNullAllowedException("OnShoot olayına hiç metot eklenmiş olmaz, olamaz!");
            } 
            return OnShoot(this, shoot);
        }

        /// <summary>
        /// Shoot parametresi ve kalecinin özellikleri arasında bir fonksiyonun sonucuna göre
        /// gol ise true, değilse false dönebilir. Ama burada kaleci Muslera ise kesin gol diyelim
        /// </summary>
        /// <param name="_shoot"></param>
        /// <returns></returns>
        public bool Yakalamayi_Dene(Shoot _shoot)
        {
            if (this.Adi == "Muslera")
            {
                return false; // tutamadı, gol
            }
            return true;
        }
    }

    /**
     * ----- YAPIYI ANLAYALIM:
     * Farkettiyseniz olayı tetiklendiğinde, bu olaya abonelere
     *   olayı kimin yaptığı,
     *   nasıl bir parametreyle gerçekleştiğini dönüyor
     *   Sonuçtada abonelerin topa müdahele edeceği düşünüldüğü için TopunDurumu
     *   tipinde bir sonuç değerini bekliyoruz.
     * 
     *           TopunDurumu OnShoot(Topcu sender, Shoot e) 
     *       
     * 
     * ----- GENEL DELEGATE TİPİ TANIMLAMAYA ÇALIŞALIM:
     * Bu OLAY TANIMINI genelleyerek şu metodu olay tutucu metodun imzası olarak elde edebiliriz:
     * 
     *             void On_BirŞey_Oldu(object sender, OlayParams e)
     *             
     *        
     * ----- GENEL OLAY PARAMETRE TİPİ TANIMLAMAYA ÇALIŞALIM
     * Bu metot tutucuyu şöyle yazabiliriz:
     * 
     *        delegate void OnDelegate(object sender, EventArgs e)
     *       
     * Bu tanımala gereği bizim EventArgs diye "genel olay parametreleri" tutan bir üst sınıfa ihtiyacımız var
     * Bu sınıftan kendi parametrelerimizi taşıyan sınıflar yaratarak aynı delegate tipini kullanabiliriz
     *  
     * ----- EVENTHANDLER TİPİ İŞİMİZİ GÖRECEK SANKİ
     * Yukarıdaki delegate tip tanımına uyan genel bir tip var adı: EventHandler tipi. 
     * Hem her olaya uygun olan EventArgs tipinde parametresi de var
     * 
     *      public delegate void EventHandler(object sender, System.EventArgs e)
     *      
     * Şeklinde tanımlı ve yukarıdaki imzaya uygun(void dönen ve iki parametre alan[object, EventArgs] metotlar için)
     * EventHandler tipini kullanabiliriz artık.
     */

    // ----- GENEL OLAY PARAMETRE TİPİ olan EventArgs'dan türesin olay parametre tipimiz
    public partial class Shoot : EventArgs { }

    /** 
     * Artık olay tanımımızı değiştirebiliriz
     */

    public partial class Topcu
    {
        // Başlangıç için boş bir isimsiz metodu değer olarak atadık ki 
        // eventi tetikleyeceğimiz yerde if(OnShoot2 != null){ OnShoot2(..) } null kontrolüne gerek kalmasın
        public event EventHandler OnShoot2 = delegate(object sender, EventArgs args) { };
    }
    /**
     * OnShoot2 metoduna parametre olacak gelen args değerleri Shoot türünden olabilir.
     * Ancak içeride bilinçli(explicit) cast(tür dönüşümü) etmeliyiz
     * 
     * kaleciMuslera.OnShoot2 += (sutuVuranOyuncu, sutunOzelligi) => Console.WriteLine(((Shoot)sutunOzelligi).Hiz);
     * 
     * gibi. 
     * Yada generic tip olan EventHandler<T> ile EventArgs türünden değil, kendi parametre türümüz olan Shoot türünden
     * bir method handler yaratmasını söylemeliyiz. 
     * 
     * Aşağıdaki gibi:
     */

    public partial class Topcu
    {
        // Generic tipli EventHandler'ı kullanarak bizim arguman tipimizden değerleri geçiriyor olağız.
        // eventi tetikleyeceğimiz yerde if(OnShoot3 != null){ OnShoot3(..) } null kontrolüne gerek kalmasın
        public event EventHandler<Shoot> OnShoot3 = delegate(object sender, Shoot args) { };
    }

    /**
     * Eğer Topcu sinifindan türeyen bir SolBek tipimiz olsa ve onun da OnShoot olayını tetiklemesi gerekse
     */

    public partial class SolBek : Topcu
    {
        public override void Ceza_Sahasina_Topla_Gir()
        {
            base.Ceza_Sahasina_Topla_Gir();
        }

        /// <summary>
        /// Sol beklerin şutu azıcık farklı olsun. 
        /// Mesela sol ayağına gelirse normal golcüden 2 kaplan daha güçlü vursun ;)
        /// </summary>
        public void SolAyaklaShoot()
        {
            // Topu düzeltsin,
            // Sol ayağına alsın, 
            // hede höde yapsın ve vursun. OnShoot olayı ata sınıftan tetikleneceği için
            // base.veShoooot metodunu çağırsın
            base.veShoooot(new Shoot()
                           {
                               Hiz = 100,
                               Aci = 70, //azicik yamuk vursun
                               Zaman = DateTime.Now
                           });

            // sonra ellerini başının arasına alsın,
            // Geri koşsun vs. vs....
        }
    }
}


Şimdi biz neden event diye bir
Çalışan hali
using System;
using System.Threading;

namespace caEvent1
{
public delegate void OnDemlendi();

class CayMakinasi
{
public CayMakinasi()
{
Console.WriteLine("Çay koyuldu...");
}

public event OnDemlendi eventDemlendi;

public void Demle()
{
Console.WriteLine();
Console.Write("Çay demleniyor ");
for (int i = 3; i > 0; i--)
{
Console.Write(".");
Thread.Sleep(1000);   
}
Console.WriteLine();
Demlendi();
}

private void Demlendi()
{
if (eventDemlendi!=null)
{
Console.WriteLine("  ---       DEMLİK İÇİNDE İŞLEMLER YAPILIYOR       --- ");
Console.WriteLine("  --- Demlikte işlem yapılıyor. Bitince haber verilecek");
Console.WriteLine("  --- ");
Console.Write("  --- Demleniyor");
for (int i = 3; i > 0; i--)
{
Thread.Sleep(3000);
Console.Write(".");
}
Console.WriteLine("  --- ");
Console.WriteLine("  --- Demlikten Haber VAR: <Çay demlendi>");
Console.WriteLine();
Console.WriteLine();
eventDemlendi();
}
}
}

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Çay yapmaya başlıyoruz...");
Console.WriteLine();

CayMakinasi cm = new CayMakinasi();
cm.eventDemlendi += new OnDemlendi(cm_OnDemlendi);

cm.Demle();

Console.WriteLine();
Console.WriteLine("Tavşan kanı bunlaaarrr...");
}

static void cm_OnDemlendi()
{
Console.WriteLine("**************************************************************");
Console.WriteLine("* Çayın olduğunda, makine metot işaretçisini tetikler.");
Console.WriteLine("* ");
Console.WriteLine("* O işaretçiyede kendi metodumuzu iliştiririzki ");
Console.WriteLine("* tam o sıra bizde işlemler yapabilelim.");
Console.WriteLine("* ");
Console.WriteLine("* Buna en güzel örnek, düğmeye tıklandığında işlem yapmamız");
Console.WriteLine("*  ya da GridView'a her satır eklendiğinde (RowDataBound) ");
Console.WriteLine("* satıra müdahale etme isteğimiz verilebilir.");
Console.WriteLine("**************************************************************");

}
}
}




Çalışan hali
using System;
using System.Threading;

namespace caEvent1
{
public delegate void OnDemlendi();

class CayMakinasi
{
public CayMakinasi()
{
Console.WriteLine("Çay koyuldu...");
}

public event OnDemlendi eventDemlendi;

public void Demle()
{
Console.WriteLine();
Console.Write("Çay demleniyor ");
for (int i = 3; i > 0; i--)
{
Console.Write(".");
Thread.Sleep(1000);   
}
Console.WriteLine();
Demlendi();
}

private void Demlendi()
{
if (eventDemlendi!=null)
{
Console.WriteLine();
Console.WriteLine("  *** Demlikten Haber VAR: <Çay demlendi>");
Console.WriteLine();
Console.WriteLine();
eventDemlendi();
}
}
}

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Kahvehanede müşteri seslenir.");
Console.WriteLine("  - Garsooon 3 çaaay...!");
Thread.Sleep(1000);
Console.WriteLine("Garon cevap verir.");
Console.WriteLine("  - Taze yapıyorum Ali abicim...");

Thread.Sleep(1500);            
Console.WriteLine("Çay Makinesinin fişi takılır(nesne yaratılır),");
CayMakinasi cm = new CayMakinasi();

Thread.Sleep(4000);
Console.WriteLine("Çay olunca makine ötecek. Bizde bu sinyali duyar duymaz çay almaya gideceğiz.");
cm.eventDemlendi += new OnDemlendi(cm_OnDemlendi);

Thread.Sleep(2000);
Console.WriteLine("Çay Makinesinin ÇAY YAP düğmesine basılır(nesnenin metodu tetiklenir)");
cm.Demle();

Console.WriteLine("Tavşan kanı bunlaaarrr...");
}

static void cm_OnDemlendi()
{
Console.WriteLine("Garson makinenin başına gelir ve 3 çay koyar.");
Thread.Sleep(2500);
}
}
}

Peki birde metin okuyan ve "okuma tamamlandığında" olayında çalışan fonksiyon örneğiyle bir kod görelim:
using System;
using System.Speech.Synthesis;
using System.Threading;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            SpeechSynthesizer synthesizer = new SpeechSynthesizer();
            synthesizer.Volume = 100;  // 0...100
            synthesizer.Rate = -2;     // -10...10

            // Synchronous
            synthesizer.Speak("Merhaba Cem");
            synthesizer.SpeakCompleted += (a, b) =>
                                          {
                                              Console.WriteLine("Konuşma tamamlandı");
                                          };

            // Asynchronous
            var p = synthesizer.SpeakAsync("Asynchronous talk with Speak Async");
            while (!p.IsCompleted)
            {
                Console.WriteLine("Async function is still continuing");
                Thread.Sleep(100);
            }
            Console.WriteLine("End of Main Thread");
        }
    }
}