Objavljen Internet Explorer 8 RC1


Jučer se na stranici Microsoft Internet Explorera pojavio link za download Release Candidate 1. Naime Release Candidate ili kraće RC je zadnja faza u razvijanju softwera. Kako smo već navikli od Microsoft konačna verzija novog Internet Explorera 8 mogla bi se uskoro pojaviti i sigurno prije Windows 7.

Instaliran mi je Internet Explorer 8 Beta 2 nekoliko mjeseci i mogu reci da je u odnosu na prethodnu verziju dosta poboljšan, a da ne govorimo o ranijim verzijama iza kojih postoji pono kontraverzi. Iako je po broju korisnika  neprikosnoven sve veća je popularnost internet pretraživača Mozilla Firefox, koji trenutno jedini parira Internet exploreru. Otud se može i naslutiti zašto  u posljednje vrijeme Microsoft svom browseru pridaje više pažnje.

Advertisements

WPF i LINQ to SQL II dio- grouping, filtering, sorting


U prethodnom postu smo vidjeli jedan od načina povezivanja WPF aplikacije sa bazom podataka preko LINQ to SQL. Naše putovanje ide dalje, a ovaj put obradićemo grupiranje, filtriranje i sortiranje. Tutorijal startamo tamo gdje smo stali u prethodnom postu.

Grupiranje podataka

Za razliku od WindowsFormsa u WPF je moguće na vrlo jednostavan način implementirati grupiranje podataka u listbox kontroli. Obzirom da naša listbox kontrola prikazuje samo jednu stavku potrebno ju je kastomizirati. Da bi prikazali više stavki (više kolona i tabele) u listbox kontroli potrebno je implementirati šablon podataka odnosno DataTemplate. Data template nije ništa drugo nego struktura u kojoj je definisano kako treba da izgleda pojedinačna stavka u listi. Kako bi implementirali grupiranje potrebno je, takodjer definisati šablon grupiranja podataka.

U listbox kontroli definisaćemo DataTemplate koji će prikazati DateOrder i ShipPostalCode, a grupiranje ćemo definisati po DateOrder. DataTemplate prikazan je na sljedećoj slici:

<DataTemplate x:Key="sablonPodataka">
    <StackPanel Orientation="Vertical">
        <TextBlock Text="{Binding Path=OrderDate}"/>
        <TextBlock Text="{Binding Path=ShipPostalCode}"/>
    </StackPanel>
</DataTemplate>

Gornji listing prikazuje StackPanel u kojem se vertikalno poravnavaju dvije tektualne kontrole koje su povezane sa kolonama OrderDate i ShipPostalCode.

DataTemplate grupirane liste definisan je sljedećim DataTemplateom

<DataTemplate x:Key="sablonGrupiranihPodataka">
    <StackPanel Orientation="Vertical">
        <TextBlock Text="{Binding Path=Name}" FontWeight="Bold" Foreground="Red"/>
    </StackPanel>
</DataTemplate>

Ovdje je nešto drugačija situacija. Zaglavlje grupiranja sastoji se samo od jedne tekstualne kontrole ali ova kontrola je povezana sa nazivom osobine (PropertyName) objekta PropertyGroupDescription klase. Ova dva šablona definisali smo u resursu Windowsa, da bi bili dostupni u kontrolama koje su definisane. Definisane šablone potrebno je još povezati sa listbox kontrolom. Obzirom da listbox kontrola po defaultu prikazuje samo jednu stavku i to onu koja je definisana preko DisplayMemberPath osobine, potrebno je ovu osobinu zamjeniti sa novom ItemTemplate koja ima referencu na DataTemplate koji smo definisali na samom početku.

Pored toga, listbox kontroli potrebo je definisati Stil grupiranja koji će imati referencu na drugi šablon kojeg smo formirali. Sve rečeno prikazano je na listingu:

<ListBox Name="listBox1" Grid.RowSpan="6" Grid.Row="3"
         IsSynchronizedWithCurrentItem="True"
         ItemsSource="{Binding Source={StaticResource listaNarudzbi}}"
         ItemTemplate="{StaticResource sablonPodataka}" Grid.ColumnSpan="2">
    <ListBox.GroupStyle>
        <GroupStyle HeaderTemplate="{StaticResource sablonGrupiranihPodataka}" />
    </ListBox.GroupStyle>
</ListBox>

Kada smo definisali prethodne korake naša aplikacija je spremna za grupiranje podataka. Sada je još potrebno implementirati logiku odnosno opciju za grupiranje podataka. U tom smislu definisaćemo Checkbox dugme kojim ćemo grupirati odnosno degrupirati podatke u listbox kontroli. CheckBox dugme postavićemo kao na slici dolje, te mu implementirati dogadjaje Checked i UnChecked .

image

Implementacija dogadjaja sastoji se u formiranju PropertyGroupDescription objekta i postavljanjem Naziva grupirane kolone OrderDate. Zatim novoformirani objekat pridodajemo u kolekciju grupiranja koja je definisana u defaultView objektu.

Kada želimo grupiranje ukloniti potrebno je iz kolekcije izbaciti objekt za grupiranje. Implementacija se nalazi na sljedećem listingu.

//Grupiranje podataka
private void button3_Checked(object sender, RoutedEventArgs e)
{
    PropertyGroupDescription groupDesc = new PropertyGroupDescription("OrderDate");
    defaultView.GroupDescriptions.Add(groupDesc);
}
//De grupiranje podataka
private void button3_Unchecked(object sender, RoutedEventArgs e)
{
    defaultView.GroupDescriptions.Clear();
}

Pokrenimo aplikaciju te isprobajmo kako grupiranje radi.

Filtriranje podataka

Sljedeća implementacija sastoji se u filtriranju podataka. Filtriranje podataka postižemo definišući osobinu (Property) Filter objekta defaultView. Za ovu implementaciju definisaćemo edit kontrolu koja će filtrirati narudžbe po poštanskom broju (ShiPostalCode). Prilikom kucanja poštanskog broja stavke u listbox kontroli će se filtrirati na osnovu unešenog broja. Edit kontrola prikazana ja na sljedećoj slici:

image

Implementacija filtriranja stavki po poštanskom broju prikazan je na sljedećem listingu:

//Filtriranje podataka u listi
private void textBox6_TextChanged(object sender, TextChangedEventArgs e)
{
    string text = this.textBox6.Text.ToLowerInvariant();
    if (defaultView.CanFilter)
        defaultView.Filter = delegate(object obj)
        {
            Order narudzba = obj as Order;

            if (narudzba != null && narudzba.ShipPostalCode != null)
                return narudzba.ShipPostalCode.ToLowerInvariant().Contains(text);
            return false;
        };
}

Filter smo definisanli delagatom koji za parametar uzima narudžbu iz liste, te provjerava da li sadrži definisani text, te vraća true ako postoji traženi text, inače vraća false.

Sortiranje podataka

Slično kao i kod grupiranja sortiranje definišemo preko objekta ListCollectionView podešavanje propertya SortDescriptions. Sljedeći listing prikazuje sortiranje po datumu te u drugoj metodi uklanjamo sortiranje definisano prethodno.

//Sortiranje po datumu
private void checkBox1_Checked(object sender, RoutedEventArgs e)
{
   SortDescription sortiranjePoDatumu=new SortDescription("OrderDate",ListSortDirection.Ascending);
   defaultView.SortDescriptions.Add(sortiranjePoDatumu);
}
//Resetovanje sortiranje na početno
private void checkBox1_Unchecked(object sender, RoutedEventArgs e)
{
    defaultView.SortDescriptions.Clear();
}

Na sljedećoj slici prikazan je checkbox preko kojeg definišemo sortiranje podataka, Kada otkačimo checkbox sortiranje se resetuje.

image

Ovim smo završili našu implementcaiju grupiranja i sortiranja podatka. Izvorni kod za ovaj primjer dat je na ovom linku.

Windows 7 Beta ugledao svjetlo dana


clip-image002

Izlazak Windows 7 Beta zasigurno će obilježiti početak nove 2009 godine. Kako najaljuju iz Microsofta ovaj OS ponudiće puno novina, a već neke su ugledale svjetlo dana izlaskom prve oficijelne beta verzije. Preuzimanje prve bete omogućeno je pretplatnicima već 7 januara a javni download dva dana poslije. Obzirom da sam već 8 januara imao mogućnost preuzimanja ove verzije koja zauzima 2.5 GB disk prostora, trebalo mi je nekoliko dana da je pohranim na svoj disk prostor. Instalaciju Windows 7 Beta planirao sam na Virtualnoj mašini iz razloga sigurnog istraživanja, a sdruge strane i praktičnog zbog paralelnog podizanja Viste na kojoj radim i Windows 7 preko Virtualne mašine.

U koliko želite naći više informacije kako Windows 7 Beta instalirati na Vistual PC 2007 možete pogledati na ovom linku.

Prvi utisci

Sljedeći upute sa prethodnog linka instalacija je trajala preko 8 sati. Pokušao sam pronaći na internetu da li ima informacija oko vremena instalacije na VM ali ništa.Bilo kako bilo instalacija je prošla i pojavio se početni ekran na kojem su već vidljive promjene u odnosu na Vistu. Redizajnirani TaskBar kao i Windows LOGO dugme izgledaju obećavajuće. Na internetu sam pronašao jedan screen cast koji govori o novim mogućnostima Task bara i Windows LOGO dugmeta pa ga možete pogledati, a na ovom linku nse nalaze svi objavljeni screencastovi oko Windows 7. U ovom posto imao sam namjeru da napišem nešto oko standardnih programa koje dolaze uz instalaciju Windowsa a to su : Calculator, WordPad, Paint,kao i novi alati koji dolaze uz Windos 7 a to su: StickyNote i Snipping Tool.

Calculator

Kalkulator koji dolazi uz Windowse nije doživio značajne promjene (koliko je meni poznato) još od Windows 95. Ali Windows 7 donosi totalno redizajnirani kalkulator sa više mogućnosti i novim matematičkim operacijama. Novi kalkulator donosi 2 nova moda Programerski i Statistički, dok su zadržani postojeća dva standardni i prošireni (scientific)

clip-image004

Pored modula na kalkulatoru postoje i operacije konverzije odredjenih mjernih jedinica i valuta i vremena.

clip-image006

WordPad i Paint

Ova dva programa standardna za text i grafiku takodjer su redizajnirana i uskladjena sa novim microsoftovim korisničkim interfejsom „Ribbon“.

clip-image008

Paint je dobio nekoliko opcija za lakše manipulisanje grafikom poput lenjira, i rešetke s kojim se postiže bolja preciznos prilikom editovanja slike. Bez obzira što je ovaj program jedan od najjednostavijih za grafičko oblikovanje ipak je najprikladniji za brzu manipulaciju sa slikama poput ovog bloga čije slike su urađene preko painta. Pored ovog u paintu su dodane opcije za lakše razvlačenje i pomjeranje selektovanih objekata. Na statusnoj traci nalazi se klizač za zumiranje koji je standarni dio svaog korisničkog interfejsa koji koristi Ribbon. WordPad osim grafičke kozmetike i prelaska na Ribbon nije dobio dodatna proširenja onoliko koliko sam uspio da istražim, osim što postoji opcija za učitavanje slike sa diska, koja je u prethodnim verzijama bile pod opcijom Insert Object.

clip-image010

SnippingTool

SnippingTool je novi alat koji dolazi uz Windows 7 a prvenstveno služi za hvatanje slika poput standardnih programa ScreenCapture. Ovaj alat nudi nešto naprednije opcije prilikom hvatanje slika sa vašeg desktopa, poput slobodnog hvatanja, pravougaonog, hvatanja prozora i hvatanja cijelog vašeg desktopa. Pored ovog postoje opcije koje vam nude gdje i kako ćete uhvaćenu sliku pohraniti.

clip-image012

clip-image014

Slika uhvaćena sa slobodnom formom.

StickeyNotes

Vrijeme ljepljena stikija na vaš monitor je prošlo, novim Windowsom ćete moći svoje podsjetnike zaljepiti unutar vašeg desktopa. Vrlo korisan alat za one koji pišu a ne pamte.

clip-image016

Kada se tiče igara koje dolaze uz standardnu instalaciju Windowsa nisam primjetio da se je fond igara promijenio, osim što je postojećim nabačeno nešto više šminke. Novi OS nosi i nove izazove kako IT profesionalcima tako i developerima.