Spis treści
IDEA posiada bardzo wiele funkcjonalności – w tym rozdziale zaprezentuję kilka z tych, które prawdopodobnie przydadzą Ci się w mniejszym bądź większym stopniu już na początku Twojej przygody z programowaniem.
Warto także, abyś przejrzał menu główne IDEA oraz menu kontekstowe, które otwierają się po kliknięciu prawym przyciskiem myszy w edytorze kodu oraz po kliknięciu (także prawym przyciskiem) na nazwę pliku bądź katalogu w panelu ze strukturą projektu – na pewno znajdziesz tam funkcjonalności, które Ci się przydadzą.
Otwieranie istniejącego projektu¶
Jeżeli masz projekt, którego wcześniej nie otwierałeś w IDEI, możesz otworzyć go wybierając z menu File → Open..., a następnie wskazać katalog z projektem na swoim dysku. IDEA zaimportuje go, tworząc w katalogu z projektem swoje pliki konfiguracyjne, a Ty będziesz mógł od tej pory pracować nad tym projektem w IDEI.
Jeżeli podczas instalacji IDEI zaznaczyłeś opcję dodania do menu Open folder as IntelliJ IDEA Community Edition Project, to możesz także otworzyć projekt bezpośrednio w IDEI klikając prawym przyciskiem myszy na folder na Twoim dysku i wybierając tę pozycję:
Ostatnio otwarte projekty¶
IDEA zachowuje listę ostatnich projektów, nad którymi pracowałeś. Możesz szybko otworzyć jeden z tych projektów, wybierając z menu File → Open Recent:
Otwieranie kilku projektów¶
Jeżeli masz aktualnie otwarty projekt w IDEI i spróbujesz otworzyć kolejny, IDEA zapyta Cię, czy chcesz zastąpić aktualnie otwarty projekt, czy otworzyć nowe, osobne okno IDEA:
Jeżeli klikniesz This Window, aktualnie otwarty projekt zostanie zamknięty, a w jego miejsce otwarty zostanie ten, który chciałeś otworzyć. Kliknięcie New Window powoduje, że otworzy się nowe okno z IDEĄ.
Ścieżka do pliku i otwieranie eksploratora Windows¶
Klikając prawym przyciskiem myszy na folder lub plik w panelu ze strukturą projektu pojawia się menu z wieloma przydatnymi funkcjonalnościami – jedna z nich, której często używam, to Show in Explorer. Otwiera ona okno eksploratora Windows z katalogiem, w którym znajduje się plik bądź katalog, który kliknąłeś.
Inną przydatną funkcjonalnością jest kopiowanie ścieżki do pliku. Jeżeli w panelu ze strukturą projektu klikniesz lewym przyciskiem myszki na pewien plik lub katalog, a następnie skorzystasz ze skrótu Ctrl + Shift + c, to ścieżka do tego pliku bądź katalogu zostanie wstawiona do schowka, tzn. będziesz mógł ją wkleić do dowolnego edytora lub innego miejsca za pomocą skrótu Ctrl + v.
Podpowiadanie nazw¶
Podpowiadanie nazw to jedna z najczęściej używanych funkcjonalności oferowanych przez narzędzia takie jak IDEA.
Gdy piszesz kod, IDEA analizuje go i wie z jakich klas składa się Twój projekt, jakie te klasy mają metody i pola oraz zależności do innych klas. Dzięki temu, IDEA jest w stanie podpowiadać Ci nazwy różnych elementów, z których składa się Twój kod źródłowy (czyli klas, pól, metod itd.).
Gdy zaczynasz pisać nazwę metody, którą chcesz wywołać, lub pola, do którego chcesz się odnieść, IDEA na bieżąco prezentuje Ci listę, z której możesz wybrać obiekt, którego nazwę IDEA dopasowała do wpisywanego przez Ciebie ciągu znaków – możesz strzałkami góra/dół przeglądać tę listę i zatwierdzić Enterem wybraną nazwę, lub wcisnąć Escape, aby IDEA zamknęła listę z podpowiedziami:
IDEA podpowiada także metody, które możesz wywołać na rzecz pewnego obiektu, jak widać na powyższym obrazku – na rzecz obiektu imie typu String chcę wywołać metodę, której nazwa zaczyna się od liter to – IDEA zaprezentowała mi listę metod klasy String, które dopasowała do tego ciągu znaków.
Przeglądanie dokumentacji w edytorze kodu¶
IDEA wyświetla dokumentację znanych przez nią klas gdy najedziesz na jej nazwę kursorem myszy w edytorze kodu – na poniższym obrazku widać dokumentację klasy String:
Dokumentację możesz także wyświetlić za pomocą skrótu klawiaturowego Ctrl + Q, gdy w kodzie źródłowym znajdujesz się na elemencie (np. na typie z Biblioteki Standardowej), do dokumentacji którego IDEA ma dostęp.
Przeglądanie źródeł klas¶
Bardzo przydatną funkcjonalnością jest przechodzenie do definicji klasy, metody, bądź pola. Jeżeli wciśniesz i przytrzymasz klawisz Ctrl, a następnie klikniesz na nazwę klasy, pola, bądź metody w edytorze kodu, IDEA przeniesie Cię do miejsca w kodzie źródłowym (potencjalnie w innym pliku), w którym ta klasa/pole/metoda została zdefiniowana. Tę samą akcję możesz wykonać korzystając z innego skrótu: Ctrl + b. Ten skrót nie wymaga użycia myszki.
Find Usages¶
Find Usages to szukanie w kodzie miejsc, które używają danej klasy, pola, bądź metody.
Aby skorzystać z Find Usages, kliknij prawym przyciskiem myszy w obszarze edytora kodu, gdzie znajduje się pewna klasa, metoda, bądź pole. Z menu, które się pojawi, wybierz „Find Usages”. Możesz też skorzystać ze skrótu Alt + F7:
Na dole okna IDEI pokaże się mały panel z listą wszystkich znalezionych miejsc:
Możesz dwukrotnie kliknąć lewym przyciskiem myszki na znalezione miejsce, a IDEA przeniesie Cię do niego w edytorze kodu.
Generowanie kodu¶
IDEA pomoże Ci wygenerować fragmenty kodu źródłowego, który często się powtarza. Dla przykładu, możesz wygenerować settery i gettery dla pól lub zarys metody, którą chcesz nadpisać z klasy nadrzędnej za pomocą @Override.
Do klasy WitajIdea naszego projektu dodałem następujące pole:
package com.kursjava; import java.util.Scanner; public class WitajIdea { private int pewnePole; public static void main(String[] args) { // pozostała część kodu została pominięta
Na końcu pliku, przed końcową klamrą }, nacisnąłem prawy przycisk myszki w edytorze kodu i z menu wybrałem Generate...:
W wyniku wybrania tej pozycji z menu (możesz też skorzystać ze skrótu Alt + Insert) pojawia się mały panel z listą możliwych do wygenerowania fragmentów kodu:
Wybrałem Getter and Setter – w kolejnym oknie, które się pojawi, IDEA wyświetla listę pól, które można wybrać, aby wygenerować dla nich gettery i settery. Po kliknięciu OK w tym oknie, IDEA wstawi następujące metody do klasy WitajIdea:
public int getPewnePole() { return pewnePole; } public void setPewnePole(int pewnePole) { this.pewnePole = pewnePole; }
Poza getterami i setterami możesz także wygenerować np. sygnaturę metody, którą chcesz nadpisać. Jeżeli napiszesz w edytorze kodu adnotację @Override, IDEA wyświetli listę z podpowiedziami metod, które możesz nadpisać z klasy nadrzędnej (w naszym przypadku klasą nadrzędną jest klasa Object):
Możesz strzałkami góra/dół wybrać z listy odpowiednią metodę i zatwierdzić Enterem, lub wybrać drugą pozycję z tej listy (Override/Implement methods...), co spowoduje wyświetlenie małego okna z listą wszystkich metod:
Wybrałem z listy metodę toString, a IDEA wygenerowała następujący fragment kodu:
@Override public String toString() { return super.toString(); }
Ta druga opcja przydaje się, gdy klasa nadrzędna ma wiele metod, które możesz nadpisać – łatwiej znaleźć ją w oknie, które się wtedy pojawia.
Uzupełnianie kodu¶
IDEA posiada przydatny skrót klawiaturowy Ctrl + Shift + Enter, który powoduje dokończenie wpisywanej instrukcji. To, jaki będzie efekt użycia tego skrótu, zależy od tego, co IDEA ma dla nas uzupełnić – wypróbuj ten skrót na różnych fragmentach kodu.
Dla przykładu, jeżeli zaczniemy pisać pętlę for:
for
i skorzystamy ze skrótu Ctrl + Shift + Enter, IDEA uzupełni nasz kod źródłowy w następujący sposób:
for () { }
Jak widzisz, IDEA dodała zwykłe nawiasy oraz nawiasy klamrowe.
Kolejny przykład – wpisaną instrukcję try:
try
IDEA uzupełni dodając klamry:
try { }
Gdy dopiszemy sekcję catch:
try { } catch
i ponownie skorzystamy z opisywanego skrótu, to IDEA uzupełni kod w następujący sposób:
try { } catch () { }
Kod źródłowy klasy WitajIdea¶
W kolejnych rozdziałach będziemy pracować nad innymi projektami. Pełny kod źródłowy klasy WitajIdea jest następujący:
package com.kursjava; import java.util.Scanner; public class WitajIdea { private int pewnePole; public static void main(String[] args) { String imie; // TODO sprawdzic, czy nie ma wiecej argumentow if (args.length == 1) { imie = args[0]; } else { System.out.println("Podaj imie:"); imie = getString(); } System.out.println(String.format("Witaj %s!", imie)); } public static String getString() { return new Scanner(System.in).next(); } public int getPewnePole() { return pewnePole; } public void setPewnePole(int pewnePole) { this.pewnePole = pewnePole; } @Override public String toString() { return super.toString(); } }