Mercurial Hosting > junotu
comparison src/Main.java @ 0:4e9f2e87eb7b
Repository start, basic interface mockups
| author | Fox | 
|---|---|
| date | Fri, 01 Apr 2022 00:32:11 +0200 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| -1:000000000000 | 0:4e9f2e87eb7b | 
|---|---|
| 1 | |
| 2 import java.awt.Dimension; | |
| 3 import java.awt.Font; | |
| 4 | |
| 5 import javax.swing.JFrame; | |
| 6 import javax.swing.JPanel; | |
| 7 | |
| 8 import java.awt.CardLayout; | |
| 9 import java.awt.BorderLayout; | |
| 10 import javax.swing.BoxLayout; | |
| 11 | |
| 12 import javax.swing.Box; | |
| 13 import javax.swing.JButton; | |
| 14 import javax.swing.JTextField; | |
| 15 import javax.swing.JTextArea; | |
| 16 import javax.swing.JScrollPane; | |
| 17 | |
| 18 | |
| 19 public class Main { | |
| 20 | |
| 21 public enum Tab { | |
| 22 SEARCH, | |
| 23 EDIT, | |
| 24 }; | |
| 25 | |
| 26 public static final String PROGRAM_NAME = "Junotu"; | |
| 27 | |
| 28 private static final String[] TAB_NAMES = { | |
| 29 "Search", | |
| 30 "Edit", | |
| 31 }; | |
| 32 | |
| 33 private static JFrame window; | |
| 34 | |
| 35 private static JPanel tabs; | |
| 36 private static CardLayout tabsLayout; | |
| 37 private static JPanel search; | |
| 38 private static JPanel edit; | |
| 39 | |
| 40 private static int activeTab = 0; | |
| 41 | |
| 42 public static void main(String[] args) | |
| 43 { | |
| 44 | |
| 45 window = new JFrame(); | |
| 46 panelsCreate(); | |
| 47 tabSwitch(Tab.EDIT.ordinal()); | |
| 48 | |
| 49 window.setSize(384, 384); | |
| 50 //window.setLayout(null); | |
| 51 window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | |
| 52 window.setVisible(true); | |
| 53 } | |
| 54 | |
| 55 public static void tabSwitch( int tab ) | |
| 56 { | |
| 57 tabsLayout.show(tabs, TAB_NAMES[tab]); | |
| 58 activeTab = tab; | |
| 59 window.setTitle(preferredTitle()); | |
| 60 } | |
| 61 | |
| 62 private static void panelsCreate() | |
| 63 { | |
| 64 | |
| 65 tabsLayout = new CardLayout(); | |
| 66 tabs = new JPanel( tabsLayout ); | |
| 67 | |
| 68 panelsCreateSearch(); | |
| 69 panelsCreateEdit(); | |
| 70 | |
| 71 window.add(tabs); | |
| 72 tabs.add(search); | |
| 73 tabs.add(edit); | |
| 74 tabsLayout.addLayoutComponent( search, TAB_NAMES[Tab.SEARCH.ordinal()] ); | |
| 75 tabsLayout.addLayoutComponent( edit, TAB_NAMES[Tab.EDIT.ordinal()] ); | |
| 76 | |
| 77 } | |
| 78 | |
| 79 private static void panelsCreateSearch() | |
| 80 { | |
| 81 search = new JPanel( new BorderLayout() ); | |
| 82 | |
| 83 JPanel top = new JPanel( new BorderLayout() ); | |
| 84 JTextField field = new JTextField("Type here.."); | |
| 85 JButton submit = new JButton("Search"); | |
| 86 | |
| 87 field.setPreferredSize( new Dimension(32, 32) ); | |
| 88 | |
| 89 search.add( top, BorderLayout.NORTH ); | |
| 90 top.add( field, BorderLayout.CENTER ); | |
| 91 top.add( submit, BorderLayout.EAST ); | |
| 92 | |
| 93 } | |
| 94 | |
| 95 private static void panelsCreateEdit() | |
| 96 { | |
| 97 edit = new JPanel( new BorderLayout() ); | |
| 98 | |
| 99 Box scrollContent = Box.createVerticalBox(); | |
| 100 JScrollPane scroll = new JScrollPane( scrollContent ); | |
| 101 JTextField title = new JTextField( "Title" ); | |
| 102 JTextArea content = new JTextArea( "Here you go. Some text." ); | |
| 103 | |
| 104 Box bottom = Box.createHorizontalBox(); | |
| 105 JButton back = new JButton("Cancel"); | |
| 106 JButton save = new JButton("Save"); | |
| 107 | |
| 108 title.setFont( new Font( "Monospaced", Font.PLAIN, 32 ) ); | |
| 109 content.setFont( new Font( "Monospaced", Font.PLAIN, 16 ) ); | |
| 110 | |
| 111 scroll.getVerticalScrollBar().setUnitIncrement(16); | |
| 112 | |
| 113 title.setMaximumSize( new Dimension( 1000000, 64 ) ); | |
| 114 | |
| 115 edit.add( scroll, BorderLayout.CENTER ); | |
| 116 scrollContent.add( title ); | |
| 117 scrollContent.add( Box.createVerticalStrut(10) ); | |
| 118 scrollContent.add( content ); | |
| 119 | |
| 120 edit.add( bottom, BorderLayout.SOUTH ); | |
| 121 bottom.add( back ); | |
| 122 bottom.add( Box.createHorizontalGlue() ); | |
| 123 bottom.add( save ); | |
| 124 | |
| 125 //scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); | |
| 126 | |
| 127 } | |
| 128 | |
| 129 private static String preferredTitle() | |
| 130 { | |
| 131 return PROGRAM_NAME+" - "+TAB_NAMES[activeTab]; | |
| 132 } | |
| 133 | |
| 134 } | 
