ANALISIS DAN PERANCANGAN SISTEM SHELL PADA SISTEM OPERASI WINDOWS

LAPORAN HASIL ANALISIS DAN PERANCANGAN SISTEM SHELL PADA SISTEM OPERASI WINDOWS Laporan ini sebagai syarat lulus mata kuliah Sistem Operasi Disusun oleh: Mochamad Sandria Maulana 10515004 Muhammad Fadhilah Shiddiq 10515033 Helmi Hermawan 10515016 Kevin Chandra M 10515006 JURUSAN SISTEM INFORMASI FAKULTAS TEKNIK DAN ILMU KOMPUTER UNIVERSITAS KOMPUTER INDONESIA BANDUNG 2017 KATA PENGANTAR Assalamu’alaikum warahmatullahi wabarakatuh. Segala puji bagi Allah yang telah memberikan kami kemudahan sehingga dapat menyelesaikan makalah ini. Tanpa pertolongan-Nya mungkin kami tidak akan sanggup menyelesaikannya dengan baik. Shalawat serta salam semoga terlimpah curahkan kepada baginda tercinta kita yakni Nabi Muhammad SAW. Makalah ini disusun agar pembaca dapat memperluas ilmu tentang "Analisis dan Perancangan Sistem Shell pada Sistem Operasi Windows", yang kami sajikan berdasarkan pengamatan dari berbagai sumber. Makalah ini di susun oleh kami dengan berbagai rintangan. Baik itu yang datang dari diri kami maupun yang datang dari luar. Namun dengan penuh kesabaran dan terutama pertolongan dari Tuhan akhirnya makalah ini dapat terselesaikan. Kami juga mengucapkan terima kasih kepada rekan-rekan dan seluruh pihak yang terlibat dalam penyelesaian makalah ini. Semoga makalah ini dapat memberikan pengetahuan yang lebih luas kepada pembaca. Walaupun makalah ini memiliki kelebihan dan kekurangan. Kami membutuhkan kritik dan saran dari pembaca yang membangun. Terima kasih. Bandung, 7 Juni 2017 BAB I PENDAHULUAN 1.1 LATAR BELAKANG MASALAH Sistem operasi merupakan sebuah penghubung antara pengguna dari komputer dengan perangkat keras komputer. Sebelum ada sistem operasi, orang hanya mengunakan komputer dengan menggunakan sinyal analog dan sinyal digital. Seiring dengan berkembangnya pengetahuan dan teknologi, pada saat ini terdapat berbagai sistem operasi dengan keunggulan masing-masing. Untuk lebih memahami sistem operasi maka sebaiknya perlu diketahui terlebih dahulu beberapa konsep dasar mengenai sistem operasi itu sendiri. Pengertian sistem operasi secara umum ialah pengelola seluruh sumber-daya yang terdapat pada sistem komputer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber-daya sistem komputer. Sistem operasi mempunyai tiga sasaran utama yaitu kenyamanan yang membuat penggunaan komputer menjadi lebih nyaman, efisien untuk membuat penggunaan sumber-daya sistem komputer secara efisien, serta mampu berevolusi yaitu sistem operasi harus dibangun sehingga memungkinkan dan memudahkan pengembangan, pengujian serta pengajuan sistem-sistem yang baru. 1.2 IDENTIFIKASI MASALAH Berdasarkan latar belakang masalah diatas, kami mengidentifikasikan beberapa masalah yang akan di bahas selanjutnya: • bagaimana system call bekerja pada sistem operasi • apa sajakah jenis jenis system call • kategori dari system call • membuat suatu system call 1.3 MAKSUD DAN TUJUAN Adapun maksud dan tujuan dari penelitian dan pembuatan system call ini: 1. untuk mengetahui bagaimana system call bekerja pada sistem operasi 2. untuk mengenal/mengetahui jenis-jenis dan kategori dari system call 3. melatih dan mencoba membuat aplikasi yang menggunakan konsep system call pada sebuah sistem operasi 1.4 METODE PENELITIAN Pada bagian ini membahas tentang cara-cara yang digunakan dalam pengumpulan data yang terdiri dari: • Studi literatur Yaitu dengan mengumpulkan referensi-referensi yang berasal dari buku-buku panduan ataupun dari forum-forum yang terdapat di internet yang berhubungan dengan Bahasa pemrograman dan sistem operasi. • Eksperimen Yaitu dengan melakukan percobaan-percobaan terhadap program/aplikasi yang dibuat. 1.5 SISTEMATIKA PENULISAN Sistematika penulisan penelitian ini disusun untuk memberikan gambaran umum tentang penelitian yang dilakukan. Sistematika penulisan ini adalah: BAB I PENDAHULUAN Menguraikan tentang Latar Belakang Masalah, Identifikasi Masalah, Maksud dan Tujuan, Metode Penelitian, dan Sistematika Penulisan. BAB II LANDASAN TEORI Bab ini membahas mengenai konsep dasar dan teori-teori yang berhubungan dengan sistem sistem operasi dan system call. BAB III ANALISIS DAN PERANCANGAN dan HASIL Bab ini membahas mengenai perancangan dan penjelasan program aplikasi yang telah dibuat menggunakan konsep system call. BAB II LANDASAN TEORI 2.1 PENGERTIAN SISTEM SHELL Shell, adalah program (penterjemah perintah)yang menjembatani user dengan sistem operasi dalam hal ini Kernel (inti dari sistem operasi), umumnya shell menyediakan prompt sebagai user interface, tempat dimana user dapat mengetikkan perintah-perintah yang diinginkan baik berupa perintah internal shell (internal command), ataupun perintah eksekusi file program (eksternal command), selain itu memungkinkan user menyusun sekumpulan perintah pada sebuah atau beberapa file untuk dieksekusi sebagai program. 2.2 PENGERTIAN SISTEM OPERASI Sistem Operasi adalah perangkat lunak sistem yang mengatur sumber daya dari perangkat keras dan perangkat lunak, serta sebagai jurik (daemon) untuk program komputer. Tanpa sistem operasi, pengguna tidak dapat menjalankan program aplikasi pada komputer mereka, kecuali program booting. Sistem operasi mempunyai penjadwalan yang sistematis mencakup perhitungan penggunaan memori, pemrosesan data, penyimpanan data, dan sumber daya lainnya. Untuk fungsi-fungsi perangkat keras seperti sebagai masukan dan keluaran dan alokasi memori, sistem operasi bertindak sebagai perantara antara program aplikasi dan perangkat keras komputer,[1][2] meskipun kode aplikasi biasanya dieksekusi langsung oleh perangkat keras dan seringkali akan menghubungi OS atau terputus oleh itu. Sistem operasi yang ditemukan pada hampir semua perangkat yang berisi komputer-dari ponsel dan konsol permainan video untuk superkomputer dan server web. Contoh sistem operasi modern adalah Linux, Android, iOS, Mac OS X, dan Microsoft Windows. 2.3 SEKILAS SISTEM OPERASI WINDOWS Sistem operasi yang digunakan untuk sistem komputer umum termasuk komputer personal terbagi menjadi 3 kelompok besar, yaitu: 1. Keluarga Microsoft Windows Sistem operasi meliputi antara lain ialah Windows Desktop Environment berbasis MS-DOS (versi 1.x hingga versi 3.x), berbasis GUI Windows 9x (Windows 95, 98, dan WindowsME). Sistem operasi berbasis Windows NT seperti Windows NT 3.x, Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, windows server 2008, windows server 2008 R2, Windows Home Server Windows Vista, Windows 7 (Seven) yang dirilis pada tahun 2009, Windows 8 yang dirilis pada Oktober 2012 dan Windows Orient yang akan dirilis pada tahun 2014. Keluarga Windows CE seperti windows CE 1.0-CE 6.0 dan Windows Mobile. 2) Perkembangan sistem operasi windows Mircorost Windows adalah Sistem Operasi yang dikembangkan oleh Microsoft Corporation yang menggunakan antar muka berbasis grafis atau dikenal dengan nama GUI (Graphical User Interface). a) MS-Dos Ms-Dos (Microsoft Disk Operating System) adalah Sistem Operasi yang berbasiskan teks dan Command-Line interpreter. Windows Versi pertama, Windows Graphic Environmnet 1.0 merupakan perangkat lunak yang bekerja atas arsitekstur 16-Bit dan bukan merupakan Sistem Operasi dan berjalan atas MS-DOS, sehingga untuk menjalankannya membutuhkan MS-DOS. MS-DOS sendiri sebenarnya dibuat oleh perusahaan pembuat komputer Seattle Computer Products kemudian direkrut oleh Microsoft yang selanjutnya dibeli lisensinya. MS-DOS dirilis pertama kali pada tahun 198, dan seiring dengan waktu, Microsoft pun meluncurkan versi yang lebih baru dari MS-DOS. Tidak kurang hingga delapan kali Microsoft meluncurkan versi baru MS-DOS dari tahun 1981 hingga Microsoft menghentikan dukungan MS-DOS pada tahun 200. b) Microsoft Windows (windows 1.x – windows 3.x) Microsoft Windows 1.0 merupakan versi pertama sistem operas dalam dunia sistem operasi berbasis Graphical User Interface (GUI) yang dibuat oleh Microsoft Corporation . Versi ini sebenarnya diluncurkan pertama kali pada tanggal 10 November 1998, tapi tidak pernah keluar ke pasar publik sebelum bulan November 1998, karena banyaknya hambatan yang terjadi ketika pengembangan berlangsung. Microsoft Windows 2.0 merupakan versi kedua dari sistem operasi berbasis graphical user interface (GU) buatan Microsoft Corporatio, yang dirilis pada 9 Desember 1987. Sistem ini diluncurkan untuk melengkapi kekurangan ragam aplikasi pada Windows 1.0. Windows 3.0 memiliki kemampuan dukungan kartu grafis SVGA atau XGA dan juga icon. Microsoft menyediakan SDK (Software Development Kit) sehingga para developer piranti lunak dapat mengembangkan aplikasi agar mampu berjalan di Windows 3.0 ini. Sistem ini mengenalkan Virtual Device Driver (VXD) yang berguna untuk meminimalisasi ketergantungan setiap driver pada perangkat keras tertentu. Sistem ini berevolusi menjadi Windows 3.1 yang mengenalkan fitur Multimedia dan True Type Font. Sistem ini memudahkan End-User karena adanya fitur Drag and Drop. Windows versi 3.0 ini berkembang menjadi Windows 3.11 yang mendukung aplikasi NetWorking. c) Windows 95 – windows ME Windows 95 diperkenalkan pada tanggal 14 Agustu 199. Sistem operasi ini memiliki GUI yang lebih menarik dan atraktif, menggunakan rancangan menu "Start", menu inovatif untuk mengakses grup program (pengganti Program Manager) mendukung penamaan berkas yang panjang. Windows 95 juga mendukung Plug and Play untuk mendeteksi instalasi perangkat keras dan konfigurasi secara otomatis, memiliki beberapa fasilitas seperti: Browser yang terintegrasi dan Windows Explorer untuk menjelajah Windows. Selain itu juga Windows 95 memiliki fitur untuk memanajemen daya (APM) dan diperkenalkannya juga Client-Server. d) Windows 98 - windows SE Windows 98 dikeluarkan oleh Microsoft pada 25 Jun 1998. Windows 98 sudah mendukung VGA berbasis AGP, serta mendukung media penyimpanan berkas seperti USB, diperkenalkannya NAT untuk berbagi koneksi Internet dan digantikannya Virtual Device Driver dengan Windows Driver Model. Ada juga beberapa fitur tambahan berupa aplikasi Microsoft Office dan Internet Explorer versi 5. Windows 98 juga sudah memiliki kemampuan-kemampuan untuk memainkan Game dan menjalankan aplikasi Multimedia. Windows 98SE menambahkan dukungan pada Internet Explorer 5, NAT untuk berbagi koneksi Interne, Digital Versatile Disk (DVD, Windows Driver Mode (WDM) yang menggantikan model Virtual Device Drive (VxD) serta Windows NetMeeting 3. Sistem ini menganut prinsip hibrida dengan dukungan kernel 16-bi/32-bi, dan masuk pada famili Windows 9. Windows ME diluncurkan pada tanggal 14 Septembe 200. Dalam sistem operasi ini tidak ada fitur yang spesial selain transisi dukungan grafis dari 16-Bit ke 32-Bit dan sistem ini banyak dipakai oleh pengguna pribadi. e) Windows NT 3.xx – 4.xx Windows NT sebagai pengganti windows ME mendukung arsitekrtur x86 (80×86), Intel IA64 dan AMD64 (x64) dan grafis 32-Bit. Windows NT dibangun dari pengembangan IBM OS/2 dan banyak digunakan dalam jaringan komputer. Windows NT juga memperkenalkan File System NTFS yang lebih baik dari FAT maupun FAT-32. Windows NT 3.1 dirilis untuk komputer Intel x86, DEC Alpha, dan beberapa platform yang mendukung ARC (Advanced RISC Computing MIPS. Sedangkan Windows 3.51 diluncurkan untuk mendukung komputer IBM PowerP khususnya untuk sistem PReP seperti deskto atau lapto IBM Power Series dan seri Motorol PowerStack. Meskipun menggabungkan dua teknologi dari dua perusahaan, Windows NT 3.51 tidak bisa dijalankan di atas Power Macintosh. Intergraph Corporatio kemudian membuat porting untuk arsitektur Intergraph Clipper miliknya sendiri dan membuat porting Windows NT 3.51 agar bisa berjalan di atas arsitektur SPAR (milik Sun Microsystem). Meskipun demikian, kedua produk tersebut tidak dijual ke publik sebagai produk ritel. Windows NT 4.0 diluncurkan untuk mendukung banyak platform, akan tetapi microsoft hanya membuat service pack dan update untuk dua varian (x86 dan DEC Alph). Selain ke dua varian tersebut service pack dan update dibuat oleh pihak ketiga (Motorola, Intergraph, dan lain-lain). Windows NT 4.0 merupakan versi rilis Windows NT yang mendukung DEC Alpha, MIPS, dan PowerPC. Microsoft juga membuat Windows 2000 untuk DEC Alpha hingga bulan Agustu 199. Karena Compaq menghentikan dukungan Windows NT untuk arsitektur tersebut maka Microsoft menghentikan pengembangan proyek AlphaNT tersebut. f) Windows 2000. Windows 2000 (atau Windows NT 5.0 build 2159) adalah sebuah versi sistem operas Window yang merupakan versi pengembangan dari Windows N versi 4.0 yang di dikeluarkan oleh Microsoft tanggal 17 Februari 2000 di Amerika Serikat. Windows 2000 mempunyai banyak fitur tambahan diantaranya: 1) Active Director yang baru, 2) Image Preview, 3) Plug and Play dan Windows Driver Model yang lebih baik performanya dibanding sebelumnya, 4) Browser Explore yang baru, yaitu Internet Explorer 5.0. 5) Mendukung untuk Microsoft Direct dan Open GL (Windows NT 4.0 hanya mendukung akselerasi OpenG), 6) Windows Media Playe 6.4 terintegrasi (dapat diinstalasikan di Windows NT 4.0. 7)Terminal Service yang telah terintegrasi, 8) Plug And Play yang lebih canggih, sehingga memasang hardware tertentu dapat langsung berjalan tanpa harus melalui proses restart, 9) Menggunakan driver untuk hardware berbasis Windows Driver Mode atau dikenal juga dengan WDM, 10) Dukungan manajemen daya lebih baik, yaitu ACP (Advanced Configuration and Power Interface) yang dapat menghemat daya. g) Windows XP. Windows XP menawarkan banyak perubahan, fitur dan performa, berbasis grafis digunakan pada komputer pribadi, desktop bisnis, laptop, dan pusat media. Windows XP pertama kali dirilis pada 25 Oktober 2003, 400 juta salinan instalasi digunakan pada Januari 2003. Windows XP tersedia dalam berbagai macam edisi, antara lain ialah: • Windows XP Home Edition ditargetkan untuk pengguna pribadi. • Windows XP Professional menawarkan fitur tambahan seperti dukungan untuk domain Windows Server dan dua prosesor fisik, dan ditargetkan untuk pasar power user, bisnis dan perusahaan klien. • Windows XP Media Center Edition memiliki fitur multimedi tambahan yang menawarkan kemampuan untuk merekam dan menonton acara T, melihat fil DV, dan mendengarkan musi. • Windows XP Tablet PC Edition didesain khusus untuk platform PC Tablet, yakni sebuah komputer pribadi yang menggunakan stylus. • Windows XP profesional 64-bit Edition untuk prosesor berarsitektur IA-6 (Itaniu) • Windows XP Professional x64 Edition untuk prosesor berarsitektur x86-6. • Windows XP Starter Edition yang dijual di beberapa negara berkembang. • Windows XP Embedded, sebuah versi Windows XP Professional yang dikurangi segala fiturnya di sana sini untuk pasar tertentu. h) Windows server 2003 Banyak sekali fitur yang ditawarkan pada Windows Server 2003. Fitur windows server 2003 edisi standar antara lain ialah platform .Net, fitur Domain Controller Server, PKI (Public Key Infrastructure) Server, Domain Name System (DNS), Dynamic Host Configuration Protocol (DHCP), Windows Internet Name Service (WINS), Microsoft IIS, Windows Terminal Service, Mendukung pembagian beban jaringan Fitur standar sebuah server: file service, print service, atau application server yang dapat diinstalasi (seperti Microsoft Exchange Server, SQL Server, atau aplikasi lainnya). Windows Server 2003 memiliki nama kode Whistler Server mulai dikerjakan pada akhir tahun 2000. Windows Server 2003 terdiri atas beberapa edisi atau produk yang berbeda, yakni sebagai berikut: Gambar 8. Jendela Desktop Windows server 2003 • Windows Server 2003 Enterprise • Windows Server 2003 Datacenter • Windows Server 2003 Web Edition. • Windows Small Business Server 2003 (Windows SBS) • Windows Storage Server 2003. • Windows Server 2003 Standard Edition. i) Windows Vista Windows Vista diluncurkan 8 November 2000 untuk pengguna bisnis, dan 30 Januari 2000 untuk pengguna pribadi. Windows Vista lebih mengutamakan interface atau penampilan grafis antarmuka dibandingkan dengan performa, Fitur-fiturnya antara lain AERO, Sidebar, tingkat keamanan lebih baik dari pada Windows XP. Windows Vista menggunakan Firewall with Advanced Security, Windows Defender, Parental Control, User Account Control (UAC), BitLocker Drive Encryption, ASLR. Windows Vista menggunakan IPv6, DirectX versi terbaru, dan arsitekstur 64-Bit. Windows vista mempunyai beberapa versi, yaitu: • Windows Vista Starter. • Windows Vista Home Basic. • Windows Vista Home Premium • Windows Vista Business. • Windows Vista Enterprise. • Windows Vista Ultimate j) Windows 7 Windows 7 merupakan gabungan Windows XP dan Windows Vista, Windows 7 memiliki performa yang lebih baik dari Windows Vista. Windows 7 dirilis untuk pabrikan komputer pada 22 Jul 2007 dan dirilis untuk publik pada 22 Oktobe 2007. Windows 7 lebih fokus pada pengembangan dasar Windows, dengan tujuan agar lebih kompatibel dengan aplikasi-aplikasi dan perangkat keras komputer yang kompatibel dengan Windows Vista Windows 7 lebih fokus pada dukungan multi-touch pada layar, desain ulang taskbar (Superbar), penggunaan sistem jaringan pribadi bernama HomeGroup dan peningkatan performa. Beberapa aplikasi standar yang disertakan pada versi sebelumnya dari Microsoft Windows, seperti Windows Calendar, Windows Mail, Windows Movie Maker, dan Windows Photo Gallery, tidak disertakan lagi di Windows 7. Windows 7 tidak bisa digunakan dengan jumlah memori yang terpasang melebihi kemampuannya. Jumlah ini berbeda di setiap versi Windows 7, dan juga berpengaruh pada arsitektur yang dipakai (apakah 32-bit atau 64-bit). Windows 7 memiliki 6 versi yang sama dengan Windows Vista. Hanya saja ada perbedaan nama, jika Windows Vista memiliki versi Business maka pada Windows 7 versi tersebut dinamakan Professional. Versi tersebut antara lain: • Windows 7 Ultimat • Windows 7 Professiona • Windows 7 Enterpris • Windows 7 Home Premiu • Windows 7 Home Basi • Windows 7 Starte k) Windows 8 Windows 8 adalah nama dari versi terbaru Microsoft Window, serangkaian Microsoft secara resmi merilis Windows 8 pada 26 Oktober 2012. Versi percobaan Windows 8 berupa Consumer Preview dan Release Preview. Pada tanggal 26 Juni 2013, Microsoft merilis versi Uji Coba dari Windows 8.1 (sebelumnya dikenal sebagai Windows Blue), Sistem operas ini diproduksi oleh Microsof untuk digunakan pada komputer pribad, termasuk kompute rumah dan bisnis, lapto, netboo, tablet P, serve, dan PC pusat medi. Sistem operasi ini menggunakan mikroprosesor AR selain mikroprosesor x8 tradisional buatan Inte dan AM. Antarmuka penggunanya diubah agar mampu digunakan pada peralatan layar sentu selain mous dan keyboar, sehingga Windows 8 di desain untuk perangkat tablet sentuh. Windows 8 mempunyai beberapa edisi atau versi antara lain adalah sebagai berikut: • Windows 8, setara dengan Windows 7 Starter, Home Basic, Home Premium. • Windows 8 Pro, setara dengan Windows 7 Professional. • Windows 8 Enterprise, setara dengan Windows 7 Enterprise dan Ultimate. • Windows 8 RT, versi Windows khusus untuk perangkat berprosesor ARM. • Windows 8.1 2.4 PENGERTIAN FLOWCHART Flowchart adalah sebuah diagram dengan simbol-simbol grafis yang menyatakan aliran algoritma atau proses yang menampilkan langkah-langkah yang disimbolkan dalam bentuk kotak, beserta urutannya dengan menghubungkan masing masing langkah tersebut menggunakan tanda panah. Diagram ini bisa memberi solusi selangkah demi selangkah untuk penyelesaian masalah yang ada di dalam proses atau algoritma tersebut. 1. Flowchart adalah bagan-bagan yang mempunyai arus menggambarkan langkah-langkah penyelesaian suatu masalah 2. Merupakan cara penyajian dari suatu algoritma 3. Ada 2 macam flowchart: · System flowchart: Urutan proses dalam system dengan menunjukkan alat media input, output serta jenis penyimpanan dalam proses pengolahan data. · Program flowchart: Urutan instruksi yang digambarkan dengan symbol tertentu untuk memecahkan masalah dalam suatu program. Pembuatan Flowchart 1. Tidak ada kaidah yang baku 2. Flowchart = gambaran hasil analisa suatu masalah 3. Flowchart dapat bervariasi antara satu pemrograman dengan pemrograman lainnya. 4. Secara garis besar ada 3 bagian utama: · Input · Proses · Output 5. Hindari pengulangan yang tidak perlu dan logika yang berbelit sehingga jalannya proses menjadi singkat 6. Jalannnya proses digambarkan dari atas ke bawah dan diberikan tanda panah untuk memperjelas. 7. Sebuah Flowchart diawali dari satu titik START dan diakhiri dengan End. Tujuan Flowchart Tujuan utama penggunaan flowchart adalah untuk menyederhanakan rangkaian proses atau prosedur untuk memudahkan pemahaman pengguna terhadap informasi tersebut. Oleh karena itu, design sebuah flowchart harus ringkas, jelas, dan logis. BAB III ANALISIS, PERANCANGAN, DAN HASIL 3.1 Gambaran umum sistem shell Shell adalah program (penterjemah perintah) yang menjembatani user dengan sistem operasi. dalam hal ini kernel (inti sistem operasi), umumnya shell menyediakan prompt sebagai user interface, tempat dimana user mengetikkan perintah-perintah yang diinginkan baik berupa perintah internal shell (internal command), ataupun perintah eksekusi suatu file progam (eksternal command), selain itu shell memungkinkan user menyusun sekumpulan perintah pada sebuah atau beberapa file untuk dieksekusi sebagai program. • Fungsi Shell: Menyediakan akses ke layanan dari kernel. Fungsinya sebagai suatu jembatan antara user dengan kernel untuk mendapatkan hasil yang inginkan. • Macam-macam shell · Bourne shell, C shell, Emacs shell, Stand alone shell, rc shell, bean shell adalah beberapa contoh shell dari UNIX. · Cmd.exe · Command.com · Windows power shell · Singularity shell · Google shell · Console · iSeries QSHELL · dll. • Posisi shell dalam sistem operasi Misalkan posisi shell di "windows", di windows pasti ada cmd. maka cmd itu dikatakan sebuah/posisi shell dalam sistem operasi. 1. Analisis kebutuhan proses Program Keterangan Tree View Menampilkan directory menggunakan metode treeview Up one level Menaikain satu level dari treeview Cut Memindahkan file dan folder Copy Menyalin file dan folder Paste Meletakan file dan folder yang tercopy Delete Menghapus file dan folder Exit/Close Keluar dari program New Membuat folder atau file Properties Menampilan tempat dari folder atau file Rename Mengganti nama file atau folder Select all Menyeleksi semua file dan folder List view Menampilakn file atau folder dari directory secara list view 2. Analisis kegunaan shell Fungsi Shell: Menyediakan akses ke layanan dari kernel. Fungsinya sebagai suatu jembatan antara user dengan kernel untuk mendapatkan hasil yang inginkan. 3. Flowchart Cut Flowchart Copy Flowchart Delete Flowchart Paste Flowchart Properties Flowchart new Flowchart Rename Flowchart Treeview Flowchart Listview 3.4 Hasil 3.4.1 Antarmuka ( Snapshot Hasil ) 3.4.2 Penjelasan Penggunaan Antarmuka • File Dalam keadaan normal (sebelum ada folder atau file yang ditandai dengan menempatkan pointer mouse) berisi pilihan-pilihan. - New Dalam pilihan ini terdapat perintah-perintah yang berhubungan dengan perintah pembuatan item baru. Jika Anda memilih New, maka Windows akan menampilkan sub menu lain di bawah pilihan tersebut, diantaranya adalah: -File Digunakan untuk membuat file baru. - Folder Digunakan untuk membuat folder kosong atau folder baru. - Exit Digunakan untuk menutup jendela. • Edit Pada pilihan ini berisi perintah pemindahan item yang dipilih. Dalam menu Edit ini terdapat beberapa pilihan: - Cut Cut digunakan untuk menghapus kata, kelompok kata, paragraf, tabel, gambar, dan object apapun dan objek tersebut akan dipindahkan ke tempat lain - Copy Digunakan untuk menyalin item yang dipilih dan memindahkannya ke clipboard. - Paste Digunakan untuk menampilkan item yang telah disalin dan meletakannya pada daerah kerja yang dipilih. - Select All Digunakan untuk memilih semua item yang ada di jendela sebelah kanan. • View Pilihan ini digunakan untuk mengkostumisasikan jendela. Jika Anda belum menambah fasilitas lain, pilihan View mempunyai beberapa pilihan yang dapat Anda gunakan, antara lain: - Toolbar Digunakan untuk menampilkan atau menyembunyikan suatu toolbar. - Address Bar Digunakan untuk menampilkan atau menyembunyikan alamat direktori. - Status Bar Digunakan untuk menampilkan atau menyembunyikan baris status. - Large Icon Digunakan untuk menampilkan folder, program atau dokumen dalam bentuk ikon besar. - Small Icon Digunakan untuk menampilkan folder, program atau dokumen dalam bentuk ikon kecil. - List Pilihan ini sama dengan small ikon hanya semua item ditampilkan dalam bentuk kolom. - Details Digunakan untuk menampilkan informasi item yang dipilih dalam benuk ukuran, tipe, dan kapan suatu folder dimodifikasi. - Arrange Icons Digunakan untuk menyortir atau menyusun tampilan ikon file atau folder pada jendela kiri berdasarkan nama, type file, kapasitas dan tanggal. - Refresh Pilihan ini digunakan untuk merevisi isi jendela dengan tampilan terakhir yang ditayangkan. • Help Di bawah pilihan ini ada menu About. Pada bagian ini kami tidak memasukan apapun karena aplikasi ini masih tahap pengembangan 3.4.3 Coding using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; namespace Explorer12 { public class Explorer12 : System.Windows.Forms.Form { #region controls private System.Windows.Forms.Label label1; private System.Windows.Forms.Panel MainPanel; private System.Windows.Forms.Panel AddressPanel; private System.Windows.Forms.Panel WorkingPanel; private System.Windows.Forms.Splitter splitter1; private System.Windows.Forms.TextBox Address; private System.Windows.Forms.StatusBar StatusBar; private System.Windows.Forms.TreeView tvw; private System.Windows.Forms.ListView lvw; private System.ComponentModel.IContainer components; private System.Windows.Forms.ImageList img; private System.Windows.Forms.StatusBarPanel Panel1; private System.Windows.Forms.StatusBarPanel Panel2; private System.Windows.Forms.MainMenu mainMenu1; private System.Windows.Forms.MenuItem menuItem3; private System.Windows.Forms.MenuItem menuItem4; private System.Windows.Forms.MenuItem menuItem8; private System.Windows.Forms.MenuItem menuItem15; private System.Windows.Forms.MenuItem menuItem20; private System.Windows.Forms.MenuItem menuItem25; private System.Windows.Forms.ImageList imgtoolbar; private System.Windows.Forms.MenuItem mnuEditCopy; private System.Windows.Forms.MenuItem mnuEditPaste; private System.Windows.Forms.MenuItem mnuFileNewFile; private System.Windows.Forms.MenuItem mnuFileNewFolder; private System.Windows.Forms.MenuItem mnuFileRename; private System.Windows.Forms.MenuItem mnuFileDelete; private System.Windows.Forms.MenuItem mnuFileProperties; private System.Windows.Forms.MenuItem mnuFileExit; private System.Windows.Forms.MenuItem mnuFile; private System.Windows.Forms.MenuItem mnuEdit; private System.Windows.Forms.MenuItem mnuEditCut; private System.Windows.Forms.MenuItem mnuEditSelectAll; private System.Windows.Forms.MenuItem mnuView; private System.Windows.Forms.MenuItem mnuViewToolbar; private System.Windows.Forms.MenuItem mnuViewStatusBar; private System.Windows.Forms.MenuItem mnuViewLargeIcons; private System.Windows.Forms.MenuItem mnuViewSmallIcons; private System.Windows.Forms.MenuItem mnuViewList; private System.Windows.Forms.MenuItem mnuViewDetails; private System.Windows.Forms.MenuItem mnuViewArrangeIcons; private System.Windows.Forms.MenuItem mnuViewArrangeIconsByName; private System.Windows.Forms.MenuItem mnuViewArrangeIconsByType; private System.Windows.Forms.MenuItem mnuViewArrangeIconsBySize; private System.Windows.Forms.MenuItem mnuViewArrangeIconsByDate; private System.Windows.Forms.MenuItem mnuViewRefresh; private System.Windows.Forms.MenuItem mnuHelp; private System.Windows.Forms.MenuItem mnuHelpAbout; private System.Windows.Forms.MenuItem mnuViewAddressBar; #endregion #region My Variables private TreeNode openedNode; private ArrayList selections = new ArrayList(); private bool flagCopy = false; private bool flagCut = false; private ToolBarButton Properties; private ToolBarButton Delete; private ToolBarButton Paste; private ToolBarButton Copy; private ToolBarButton Cut; private ToolBarButton Up; private ToolBar ToolBar; private ESort currOrder = ESort.ByName; #endregion public Explorer12() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Explorer12)); this.imgtoolbar = new System.Windows.Forms.ImageList(this.components); this.StatusBar = new System.Windows.Forms.StatusBar(); this.Panel1 = new System.Windows.Forms.StatusBarPanel(); this.Panel2 = new System.Windows.Forms.StatusBarPanel(); this.MainPanel = new System.Windows.Forms.Panel(); this.WorkingPanel = new System.Windows.Forms.Panel(); this.lvw = new System.Windows.Forms.ListView(); this.img = new System.Windows.Forms.ImageList(this.components); this.splitter1 = new System.Windows.Forms.Splitter(); this.tvw = new System.Windows.Forms.TreeView(); this.AddressPanel = new System.Windows.Forms.Panel(); this.Address = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components); this.mnuFile = new System.Windows.Forms.MenuItem(); this.menuItem3 = new System.Windows.Forms.MenuItem(); this.mnuFileNewFile = new System.Windows.Forms.MenuItem(); this.mnuFileNewFolder = new System.Windows.Forms.MenuItem(); this.menuItem4 = new System.Windows.Forms.MenuItem(); this.mnuFileRename = new System.Windows.Forms.MenuItem(); this.mnuFileDelete = new System.Windows.Forms.MenuItem(); this.mnuFileProperties = new System.Windows.Forms.MenuItem(); this.menuItem8 = new System.Windows.Forms.MenuItem(); this.mnuFileExit = new System.Windows.Forms.MenuItem(); this.mnuEdit = new System.Windows.Forms.MenuItem(); this.mnuEditCut = new System.Windows.Forms.MenuItem(); this.mnuEditCopy = new System.Windows.Forms.MenuItem(); this.mnuEditPaste = new System.Windows.Forms.MenuItem(); this.menuItem15 = new System.Windows.Forms.MenuItem(); this.mnuEditSelectAll = new System.Windows.Forms.MenuItem(); this.mnuView = new System.Windows.Forms.MenuItem(); this.mnuViewToolbar = new System.Windows.Forms.MenuItem(); this.mnuViewAddressBar = new System.Windows.Forms.MenuItem(); this.mnuViewStatusBar = new System.Windows.Forms.MenuItem(); this.menuItem20 = new System.Windows.Forms.MenuItem(); this.mnuViewLargeIcons = new System.Windows.Forms.MenuItem(); this.mnuViewSmallIcons = new System.Windows.Forms.MenuItem(); this.mnuViewList = new System.Windows.Forms.MenuItem(); this.mnuViewDetails = new System.Windows.Forms.MenuItem(); this.menuItem25 = new System.Windows.Forms.MenuItem(); this.mnuViewArrangeIcons = new System.Windows.Forms.MenuItem(); this.mnuViewArrangeIconsByName = new System.Windows.Forms.MenuItem(); this.mnuViewArrangeIconsByType = new System.Windows.Forms.MenuItem(); this.mnuViewArrangeIconsBySize = new System.Windows.Forms.MenuItem(); this.mnuViewArrangeIconsByDate = new System.Windows.Forms.MenuItem(); this.mnuViewRefresh = new System.Windows.Forms.MenuItem(); this.mnuHelp = new System.Windows.Forms.MenuItem(); this.mnuHelpAbout = new System.Windows.Forms.MenuItem(); this.Properties = new System.Windows.Forms.ToolBarButton(); this.Delete = new System.Windows.Forms.ToolBarButton(); this.Paste = new System.Windows.Forms.ToolBarButton(); this.Copy = new System.Windows.Forms.ToolBarButton(); this.Cut = new System.Windows.Forms.ToolBarButton(); this.Up = new System.Windows.Forms.ToolBarButton(); this.ToolBar = new System.Windows.Forms.ToolBar(); ((System.ComponentModel.ISupportInitialize)(this.Panel1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.Panel2)).BeginInit(); this.MainPanel.SuspendLayout(); this.WorkingPanel.SuspendLayout(); this.AddressPanel.SuspendLayout(); this.SuspendLayout(); // // imgtoolbar // this.imgtoolbar.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgtoolbar.ImageStream"))); this.imgtoolbar.TransparentColor = System.Drawing.Color.Transparent; this.imgtoolbar.Images.SetKeyName(0, "up.png"); this.imgtoolbar.Images.SetKeyName(1, "properties.png"); this.imgtoolbar.Images.SetKeyName(2, "Copy.png"); this.imgtoolbar.Images.SetKeyName(3, "Paste.png"); this.imgtoolbar.Images.SetKeyName(4, "Cut.png"); this.imgtoolbar.Images.SetKeyName(5, "Delete.png"); // // StatusBar // this.StatusBar.Location = new System.Drawing.Point(0, 402); this.StatusBar.Name = "StatusBar"; this.StatusBar.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] { this.Panel1, this.Panel2}); this.StatusBar.ShowPanels = true; this.StatusBar.Size = new System.Drawing.Size(512, 22); this.StatusBar.TabIndex = 1; this.StatusBar.Text = "Status Bar"; // // Panel1 // this.Panel1.Name = "Panel1"; this.Panel1.Width = 300; // // Panel2 // this.Panel2.Name = "Panel2"; this.Panel2.Width = 200; // // MainPanel // this.MainPanel.Controls.Add(this.WorkingPanel); this.MainPanel.Controls.Add(this.AddressPanel); this.MainPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.MainPanel.Location = new System.Drawing.Point(0, 48); this.MainPanel.Name = "MainPanel"; this.MainPanel.Size = new System.Drawing.Size(512, 354); this.MainPanel.TabIndex = 2; // // WorkingPanel // this.WorkingPanel.Controls.Add(this.lvw); this.WorkingPanel.Controls.Add(this.splitter1); this.WorkingPanel.Controls.Add(this.tvw); this.WorkingPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.WorkingPanel.Location = new System.Drawing.Point(0, 24); this.WorkingPanel.Name = "WorkingPanel"; this.WorkingPanel.Size = new System.Drawing.Size(512, 330); this.WorkingPanel.TabIndex = 1; // // lvw // this.lvw.Cursor = System.Windows.Forms.Cursors.Default; this.lvw.Dock = System.Windows.Forms.DockStyle.Fill; this.lvw.LabelEdit = true; this.lvw.Location = new System.Drawing.Point(216, 0); this.lvw.Name = "lvw"; this.lvw.Size = new System.Drawing.Size(296, 330); this.lvw.SmallImageList = this.img; this.lvw.TabIndex = 1; this.lvw.UseCompatibleStateImageBehavior = false; this.lvw.View = System.Windows.Forms.View.List; this.lvw.AfterLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.lvw_AfterLabelEdit); this.lvw.SelectedIndexChanged += new System.EventHandler(this.lvw_SelectedIndexChanged); this.lvw.DoubleClick += new System.EventHandler(this.lvw_DoubleClick); // // img // this.img.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("img.ImageStream"))); this.img.TransparentColor = System.Drawing.Color.Transparent; this.img.Images.SetKeyName(0, "folder.png"); this.img.Images.SetKeyName(1, "File.png"); this.img.Images.SetKeyName(2, "openfolder.png"); this.img.Images.SetKeyName(3, "disk.png"); // // splitter1 // this.splitter1.Location = new System.Drawing.Point(208, 0); this.splitter1.Name = "splitter1"; this.splitter1.Size = new System.Drawing.Size(8, 330); this.splitter1.TabIndex = 2; this.splitter1.TabStop = false; // // tvw // this.tvw.Dock = System.Windows.Forms.DockStyle.Left; this.tvw.ImageIndex = 0; this.tvw.ImageList = this.img; this.tvw.LabelEdit = true; this.tvw.Location = new System.Drawing.Point(0, 0); this.tvw.Name = "tvw"; this.tvw.SelectedImageIndex = 2; this.tvw.Size = new System.Drawing.Size(208, 330); this.tvw.Sorted = true; this.tvw.TabIndex = 0; this.tvw.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.tvw_AfterLabelEdit); this.tvw.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.tvw_AfterExpand); this.tvw.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvw_AfterSelect); // // AddressPanel // this.AddressPanel.Controls.Add(this.Address); this.AddressPanel.Controls.Add(this.label1); this.AddressPanel.Dock = System.Windows.Forms.DockStyle.Top; this.AddressPanel.Location = new System.Drawing.Point(0, 0); this.AddressPanel.Name = "AddressPanel"; this.AddressPanel.Size = new System.Drawing.Size(512, 24); this.AddressPanel.TabIndex = 0; // // Address // this.Address.Dock = System.Windows.Forms.DockStyle.Fill; this.Address.Location = new System.Drawing.Point(56, 0); this.Address.Name = "Address"; this.Address.ReadOnly = true; this.Address.Size = new System.Drawing.Size(456, 20); this.Address.TabIndex = 1; this.Address.TextChanged += new System.EventHandler(this.Address_TextChanged); // // label1 // this.label1.Dock = System.Windows.Forms.DockStyle.Left; this.label1.Location = new System.Drawing.Point(0, 0); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(56, 24); this.label1.TabIndex = 0; this.label1.Text = "Address"; // // mainMenu1 // this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuFile, this.mnuEdit, this.mnuView, this.mnuHelp}); // // mnuFile // this.mnuFile.Index = 0; this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem3, this.menuItem4, this.mnuFileRename, this.mnuFileDelete, this.mnuFileProperties, this.menuItem8, this.mnuFileExit}); this.mnuFile.Text = "&File"; this.mnuFile.Select += new System.EventHandler(this.mnuFile_Select); // // menuItem3 // this.menuItem3.Index = 0; this.menuItem3.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuFileNewFile, this.mnuFileNewFolder}); this.menuItem3.Text = "&New"; // // mnuFileNewFile // this.mnuFileNewFile.Index = 0; this.mnuFileNewFile.Text = "&File"; this.mnuFileNewFile.Click += new System.EventHandler(this.mnuFileNewFile_Click); // // mnuFileNewFolder // this.mnuFileNewFolder.Index = 1; this.mnuFileNewFolder.Text = "Folde&r"; this.mnuFileNewFolder.Click += new System.EventHandler(this.mnuFileNewFolder_Click); // // menuItem4 // this.menuItem4.Index = 1; this.menuItem4.Text = "-"; // // mnuFileRename // this.mnuFileRename.Index = 2; this.mnuFileRename.Shortcut = System.Windows.Forms.Shortcut.F2; this.mnuFileRename.Text = "&Rename"; this.mnuFileRename.Click += new System.EventHandler(this.mnuFileRename_Click); // // mnuFileDelete // this.mnuFileDelete.Index = 3; this.mnuFileDelete.Shortcut = System.Windows.Forms.Shortcut.Del; this.mnuFileDelete.Text = "&Delete"; this.mnuFileDelete.Click += new System.EventHandler(this.mnuFileDelete_Click); // // mnuFileProperties // this.mnuFileProperties.Index = 4; this.mnuFileProperties.Text = "&Properties"; this.mnuFileProperties.Click += new System.EventHandler(this.mnuFileProperties_Click); // // menuItem8 // this.menuItem8.Index = 5; this.menuItem8.Text = "-"; // // mnuFileExit // this.mnuFileExit.Index = 6; this.mnuFileExit.Text = "E&xit"; this.mnuFileExit.Click += new System.EventHandler(this.mnuFileExit_Click); // // mnuEdit // this.mnuEdit.Index = 1; this.mnuEdit.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuEditCut, this.mnuEditCopy, this.mnuEditPaste, this.menuItem15, this.mnuEditSelectAll}); this.mnuEdit.Text = "&Edit"; this.mnuEdit.Select += new System.EventHandler(this.mnuEdit_Select); // // mnuEditCut // this.mnuEditCut.Index = 0; this.mnuEditCut.Shortcut = System.Windows.Forms.Shortcut.CtrlX; this.mnuEditCut.Text = "Cu&t"; this.mnuEditCut.Click += new System.EventHandler(this.mnuEditCut_Click); // // mnuEditCopy // this.mnuEditCopy.Index = 1; this.mnuEditCopy.Shortcut = System.Windows.Forms.Shortcut.CtrlC; this.mnuEditCopy.Text = "&Copy"; this.mnuEditCopy.Click += new System.EventHandler(this.mnuEditCopy_Click); // // mnuEditPaste // this.mnuEditPaste.Index = 2; this.mnuEditPaste.Shortcut = System.Windows.Forms.Shortcut.CtrlV; this.mnuEditPaste.Text = "&Paste"; this.mnuEditPaste.Click += new System.EventHandler(this.mnuEditPaste_Click); // // menuItem15 // this.menuItem15.Index = 3; this.menuItem15.Text = "-"; // // mnuEditSelectAll // this.mnuEditSelectAll.Index = 4; this.mnuEditSelectAll.Shortcut = System.Windows.Forms.Shortcut.CtrlA; this.mnuEditSelectAll.Text = "Select &All"; this.mnuEditSelectAll.Click += new System.EventHandler(this.mnuEditSelectAll_Click); // // mnuView // this.mnuView.Index = 2; this.mnuView.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuViewToolbar, this.mnuViewAddressBar, this.mnuViewStatusBar, this.menuItem20, this.mnuViewLargeIcons, this.mnuViewSmallIcons, this.mnuViewList, this.mnuViewDetails, this.menuItem25, this.mnuViewArrangeIcons, this.mnuViewRefresh}); this.mnuView.Text = "&View"; // // mnuViewToolbar // this.mnuViewToolbar.Checked = true; this.mnuViewToolbar.Index = 0; this.mnuViewToolbar.Text = "&Toolbar"; this.mnuViewToolbar.Click += new System.EventHandler(this.mnuViewToolbar_Click); // // mnuViewAddressBar // this.mnuViewAddressBar.Checked = true; this.mnuViewAddressBar.Index = 1; this.mnuViewAddressBar.Text = "Address &Bar"; this.mnuViewAddressBar.Click += new System.EventHandler(this.mnuViewAddressBar_Click); // // mnuViewStatusBar // this.mnuViewStatusBar.Checked = true; this.mnuViewStatusBar.Index = 2; this.mnuViewStatusBar.Text = "&Status Bar"; this.mnuViewStatusBar.Click += new System.EventHandler(this.mnuViewStatusBar_Click); // // menuItem20 // this.menuItem20.Index = 3; this.menuItem20.Text = "-"; // // mnuViewLargeIcons // this.mnuViewLargeIcons.Index = 4; this.mnuViewLargeIcons.Text = "&Large Icons"; this.mnuViewLargeIcons.Click += new System.EventHandler(this.mnuViewLargeIcons_Click); // // mnuViewSmallIcons // this.mnuViewSmallIcons.Index = 5; this.mnuViewSmallIcons.Text = "&Small Icons"; this.mnuViewSmallIcons.Click += new System.EventHandler(this.mnuViewSmallIcons_Click); // // mnuViewList // this.mnuViewList.Checked = true; this.mnuViewList.Index = 6; this.mnuViewList.Text = "L&ist"; this.mnuViewList.Click += new System.EventHandler(this.mnuViewList_Click); // // mnuViewDetails // this.mnuViewDetails.Index = 7; this.mnuViewDetails.Text = "&Details"; // // menuItem25 // this.menuItem25.Index = 8; this.menuItem25.Text = "-"; // // mnuViewArrangeIcons // this.mnuViewArrangeIcons.Index = 9; this.mnuViewArrangeIcons.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuViewArrangeIconsByName, this.mnuViewArrangeIconsByType, this.mnuViewArrangeIconsBySize, this.mnuViewArrangeIconsByDate}); this.mnuViewArrangeIcons.Text = "&Arrange Icons"; // // mnuViewArrangeIconsByName // this.mnuViewArrangeIconsByName.Index = 0; this.mnuViewArrangeIconsByName.Text = "By &Name"; this.mnuViewArrangeIconsByName.Click += new System.EventHandler(this.mnuViewArrangeIconsByName_Click); // // mnuViewArrangeIconsByType // this.mnuViewArrangeIconsByType.Index = 1; this.mnuViewArrangeIconsByType.Text = "By &Type"; this.mnuViewArrangeIconsByType.Click += new System.EventHandler(this.mnuViewArrangeIconsByType_Click); // // mnuViewArrangeIconsBySize // this.mnuViewArrangeIconsBySize.Index = 2; this.mnuViewArrangeIconsBySize.Text = "By &Size"; this.mnuViewArrangeIconsBySize.Click += new System.EventHandler(this.mnuViewArrangeIconsBySize_Click); // // mnuViewArrangeIconsByDate // this.mnuViewArrangeIconsByDate.Index = 3; this.mnuViewArrangeIconsByDate.Text = "By &Date"; this.mnuViewArrangeIconsByDate.Click += new System.EventHandler(this.mnuViewArrangeIconsByDate_Click); // // mnuViewRefresh // this.mnuViewRefresh.Index = 10; this.mnuViewRefresh.Text = "&Refresh"; // // mnuHelp // this.mnuHelp.Index = 3; this.mnuHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuHelpAbout}); this.mnuHelp.Text = "&Help"; // // mnuHelpAbout // this.mnuHelpAbout.Index = 0; this.mnuHelpAbout.Text = "&About"; // // Properties // this.Properties.ImageIndex = 1; this.Properties.Name = "Properties"; this.Properties.Text = "Properties"; // // Delete // this.Delete.ImageIndex = 5; this.Delete.Name = "Delete"; this.Delete.Text = "Delete"; // // Paste // this.Paste.ImageIndex = 3; this.Paste.Name = "Paste"; this.Paste.Text = "Paste"; // // Copy // this.Copy.ImageIndex = 2; this.Copy.Name = "Copy"; this.Copy.Text = "Copy"; // // Cut // this.Cut.ImageIndex = 4; this.Cut.Name = "Cut"; this.Cut.Text = "Cut"; // // Up // this.Up.ImageIndex = 0; this.Up.Name = "Up"; this.Up.Text = "Back"; // // ToolBar // this.ToolBar.Appearance = System.Windows.Forms.ToolBarAppearance.Flat; this.ToolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] { this.Up, this.Cut, this.Copy, this.Paste, this.Delete, this.Properties}); this.ToolBar.Cursor = System.Windows.Forms.Cursors.Hand; this.ToolBar.DropDownArrows = true; this.ToolBar.ImageList = this.imgtoolbar; this.ToolBar.Location = new System.Drawing.Point(0, 0); this.ToolBar.Name = "ToolBar"; this.ToolBar.ShowToolTips = true; this.ToolBar.Size = new System.Drawing.Size(512, 48); this.ToolBar.TabIndex = 0; this.ToolBar.TextAlign = System.Windows.Forms.ToolBarTextAlign.Right; this.ToolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.ToolBar_ButtonClick); // // Explorer12 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(512, 424); this.Controls.Add(this.MainPanel); this.Controls.Add(this.StatusBar); this.Controls.Add(this.ToolBar); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; this.Menu = this.mainMenu1; this.Name = "Explorer12"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Explorer12"; this.Load += new System.EventHandler(this.Explorer12_Load); ((System.ComponentModel.ISupportInitialize)(this.Panel1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.Panel2)).EndInit(); this.MainPanel.ResumeLayout(false); this.WorkingPanel.ResumeLayout(false); this.AddressPanel.ResumeLayout(false); this.AddressPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion [STAThread] static void Main() { try { Application.Run(new Explorer12()); } catch(Exception e) { MessageBox.Show(e.Message); } } private void Explorer12_Load(object sender, System.EventArgs e) { Address.Text = "My Computer"; Library.ShowDrives(tvw);//ShowDrives(tvw); selections.Clear(); } private void tvw_AfterExpand(object sender, System.Windows.Forms.TreeViewEventArgs e) { try { Library.FillFoldersInTree(e.Node);//FillFoldersInTree(e.Node); } catch { } } private void tvw_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { Address.Text = e.Node.FullPath; openedNode = e.Node; Library.OpenFolder(lvw, Address.Text, currOrder); StatusBar.Panels[1].Text = "OverAll Size: " + FrazIO.FormatSize(FrazIO.SizeOfFolder(Address.Text)); selections.Clear(); selections.Add(Address.Text); } private void lvw_DoubleClick(object sender, System.EventArgs e) { foreach(ListViewItem lvi in lvw.SelectedItems) { if(!FrazIO.IsFolder(Address.Text + "\\" + lvi.Text)) { DoubleClickedOnFile(Address.Text + "\\" + lvi.Text); return; } if(Address.Text == null) { Address.Text=lvi.Text; } else { Address.Text += ("\\" + lvi.Text); } openedNode.Expand(); IEnumerator iter = openedNode.Nodes.GetEnumerator(); while(iter.MoveNext()) { TreeNode node= (TreeNode) iter.Current; if(node.FullPath == Address.Text) { tvw.SelectedNode = node; break; } } } } private void ToolBar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) { if(e.Button == Up) { if(openedNode == null || openedNode.Parent == null) { tvw.CollapseAll(); //Address.Text = "My Computer"; return; } openedNode.Collapse(); tvw.SelectedNode = openedNode.Parent; return; } if(e.Button == Properties) { mnuFileProperties_Click(null, null); return; } if(e.Button == Copy) { mnuEditCopy_Click(null, null); return; } if(e.Button == Paste) { mnuEditPaste_Click(null, null); return; } if(e.Button == Cut) { mnuEditCut_Click(null, null); return; } if(e.Button == Delete) { mnuFileDelete_Click(null, null); return; } } private void lvw_SelectedIndexChanged(object sender, System.EventArgs e) { selections.Clear(); if(lvw.SelectedItems.Count == 0) { StatusBar.Panels[0].Text = ""; StatusBar.Panels[1].Text = "OverAll Size: " + FrazIO.FormatSize(FrazIO.SizeOfFolder(Address.Text)); return; } long size=0; try { foreach(ListViewItem lvi in lvw.SelectedItems) { string path = Address.Text + "\\" + lvi.Text; selections.Add(path); if(!FrazIO.IsFolder(path)) { StatusBar.Panels[0].Text = "File Type: " + (new FileInfo(path)).Extension; size += (new FileInfo(path)).Length; //ClickedOnFile(path); } else { StatusBar.Panels[0].Text = "File Folder"; size += FrazIO.SizeOfFolder(path); } } StatusBar.Panels[1].Text = "Size: " + FrazIO.FormatSize(size); if(lvw.SelectedItems.Count > 1) { StatusBar.Panels[0].Text = lvw.SelectedItems.Count.ToString() + " items selected"; } } catch(Exception ex) { MessageBox.Show(ex.Message); } } private void DoubleClickedOnFile(string path) { try { System.Diagnostics.Process myProc = new System.Diagnostics.Process(); myProc.EnableRaisingEvents = false; myProc.StartInfo = new System.Diagnostics.ProcessStartInfo(path); myProc.Start(); } catch(Exception e) { MessageBox.Show(e.Message); } } private void lvw_AfterLabelEdit(object sender, System.Windows.Forms.LabelEditEventArgs e) { string path = Address.Text + "\\" + lvw.Items[e.Item].Text; string name = e.Label; if(!FrazIO.Rename(path, name)) e.CancelEdit = true; openedNode.Collapse(); openedNode.Expand(); } private void mnuEditCopy_Click(object sender, System.EventArgs e) { FrazIO.Copy(selections); flagCopy = true; } private void mnuEditPaste_Click(object sender, System.EventArgs e) { this.Cursor = Cursors.WaitCursor; FrazIO.Paste(Address.Text); if(flagCut == true) { IDataObject iData = Clipboard.GetDataObject(); ArrayList srcPaths = (ArrayList) iData.GetData("System.Collections.ArrayList"); FrazIO.Delete(srcPaths); } flagCut = false; Library.OpenFolder(lvw, Address.Text, currOrder); if(openedNode.Parent != null) { openedNode.Parent.Collapse(); openedNode.Parent.Expand(); } else { openedNode.Collapse(); openedNode.Expand(); } selections.Clear(); this.Cursor = Cursors.Default; } private void mnuEdit_Select(object sender, System.EventArgs e) { if(selections.Count == 0) { mnuEditCopy.Enabled = false; mnuEditCut.Enabled = false; } else { mnuEditCopy.Enabled = true; mnuEditCut.Enabled = true; } if(flagCopy == false && flagCut == false) { mnuEditPaste.Enabled = false; } else { mnuEditPaste.Enabled = true; } } private void mnuEditSelectAll_Click(object sender, System.EventArgs e) { foreach(ListViewItem item in lvw.Items) { item.Selected = true; } lvw.Focus(); } private void mnuEditCut_Click(object sender, System.EventArgs e) { FrazIO.Copy(selections); flagCut = true; } private void mnuFileDelete_Click(object sender, System.EventArgs e) { FrazIO.Delete(selections); Library.OpenFolder(lvw, Address.Text, currOrder); if(openedNode.Parent != null) { openedNode.Parent.Collapse(); openedNode.Parent.Expand(); } openedNode.Collapse(); openedNode.Expand(); selections.Clear(); } private void mnuFile_Select(object sender, System.EventArgs e) { if(selections.Count == 0) { mnuFileRename.Enabled = false; mnuFileDelete.Enabled = false; mnuFileProperties.Enabled = false; } else { mnuFileRename.Enabled = true; mnuFileDelete.Enabled = true; mnuFileProperties.Enabled = true; } } private void mnuFileExit_Click(object sender, System.EventArgs e) { Application.Exit(); } private void mnuFileProperties_Click(object sender, System.EventArgs e) { string s=""; if(selections.Count != 0) s = "Selected Files and Folders:\r\n"; foreach(object selection in selections) { s+= " " + (string) selection + "\r\n"; } MessageBox.Show(s,"Properties"); } private void mnuFileNewFolder_Click(object sender, System.EventArgs e) { try { DirectoryInfo dir = new DirectoryInfo(Address.Text + "\\" + "New Folder"); dir.Create(); ListViewItem item = lvw.Items.Add(dir.Name, 0); //Library.OpenFolder(lvw, Address.Text); if(openedNode.Parent != null) { openedNode.Parent.Collapse(); openedNode.Parent.Expand(); } else { openedNode.Collapse(); openedNode.Expand(); } item.BeginEdit(); } catch(Exception ex) { MessageBox.Show(ex.Message, "Error"); } } private void mnuFileNewFile_Click(object sender, System.EventArgs e) { try { FileInfo file = new FileInfo(Address.Text + "\\" + "New File.txt"); file.Create(); (lvw.Items.Add(file.Name, 1)).BeginEdit(); } catch(Exception ex) { MessageBox.Show(ex.Message, "Error"); } } private void mnuFileRename_Click(object sender, System.EventArgs e) { if(lvw.Focused) lvw.FocusedItem.BeginEdit(); else if(tvw.Focused) tvw.SelectedNode.BeginEdit(); } private void tvw_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) { string path = e.Node.FullPath; string name = e.Label; if(!FrazIO.Rename(path, name)) e.CancelEdit = true; } private void mnuViewLargeIcons_Click(object sender, System.EventArgs e) { ImageList img1 = new ImageList(); IEnumerator images = img.Images.GetEnumerator(); while(images.MoveNext()) { Image img2 = (Image) images.Current; img1.Images.Add(img2); } img1.ImageSize = new System.Drawing.Size(24, 24); lvw.LargeImageList = img1; lvw.View = View.LargeIcon; mnuViewLargeIcons.Checked = true; mnuViewSmallIcons.Checked = false; mnuViewList.Checked = false; mnuViewDetails.Checked = false; } private void mnuViewSmallIcons_Click(object sender, System.EventArgs e) { lvw.SmallImageList = img; lvw.View = View.SmallIcon; mnuViewSmallIcons.Checked = true; mnuViewLargeIcons.Checked = false; mnuViewList.Checked = false; mnuViewDetails.Checked = false; } private void mnuViewList_Click(object sender, System.EventArgs e) { lvw.SmallImageList = img; lvw.View = View.List; mnuViewList.Checked = true; mnuViewSmallIcons.Checked = false; mnuViewLargeIcons.Checked = false; mnuViewDetails.Checked = false; } private void mnuViewToolbar_Click(object sender, System.EventArgs e) { ToolBar.Visible = !ToolBar.Visible; mnuViewToolbar.Checked = !mnuViewToolbar.Checked; } private void mnuViewStatusBar_Click(object sender, System.EventArgs e) { StatusBar.Visible = !StatusBar.Visible; mnuViewStatusBar.Checked = !mnuViewStatusBar.Checked; } private void mnuViewAddressBar_Click(object sender, System.EventArgs e) { AddressPanel.Visible = !AddressPanel.Visible; mnuViewAddressBar.Checked = !mnuViewAddressBar.Checked; } private void mnuViewArrangeIconsByName_Click(object sender, System.EventArgs e) { currOrder = ESort.ByName; Library.OpenFolder(lvw, Address.Text, currOrder); } private void mnuViewArrangeIconsByType_Click(object sender, System.EventArgs e) { currOrder = ESort.ByType; Library.OpenFolder(lvw, Address.Text, currOrder); } private void mnuViewArrangeIconsBySize_Click(object sender, System.EventArgs e) { currOrder = ESort.BySize; Library.OpenFolder(lvw, Address.Text, currOrder); } private void mnuViewArrangeIconsByDate_Click(object sender, System.EventArgs e) { currOrder = ESort.ByDate; Library.OpenFolder(lvw, Address.Text, currOrder); } private void mnuViewRefresh_Click(object sender, System.EventArgs e) { Library.OpenFolder(lvw, Address.Text, currOrder); openedNode.Collapse(); openedNode.Expand(); } private void Address_TextChanged(object sender, EventArgs e) { } } public class Library { public static void ShowDrives(TreeView tvw) { tvw.Nodes.Clear(); string [] dirs = Environment.GetLogicalDrives(); foreach(string dir in dirs) { TreeNode node = new TreeNode(dir, 3, 3); node.Nodes.Add(""); tvw.Nodes.Add(node); if(dir==@"C:\") tvw.SelectedNode = node; } } public static void FillFoldersInTree(TreeNode node) { node.Nodes.Clear(); string absoluteAddress = node.FullPath; DirectoryInfo dir = new DirectoryInfo(absoluteAddress); DirectoryInfo [] subDirs = dir.GetDirectories(); foreach(DirectoryInfo subDir in subDirs) { TreeNode current = node.Nodes.Add(subDir.Name); if(subDir.GetDirectories().Length > 0) { current.Nodes.Add(""); } } } public static void OpenFolder(ListView lvw, string address, ESort order) { try { DirectoryInfo dir = new DirectoryInfo(address); lvw.Clear(); DirectoryInfo [] subDirs = dir.GetDirectories(); Library.Sort(subDirs, order); foreach(DirectoryInfo subDir in subDirs) { lvw.Items.Add(subDir.Name, 0); } FileInfo [] files = dir.GetFiles(); Library.Sort(files, order); foreach(FileInfo file in files) { lvw.Items.Add(file.Name, 1); } } catch(Exception e) { MessageBox.Show(e.Message); } } public static void Sort(DirectoryInfo []array, ESort order) { string item1 = ""; string item2 = ""; DirectoryInfo temp=null; for(int i=0; i

Komentar