Просмотр исходного кода

Fix UI updates to not be horrendous.

Sam Jaffe 5 лет назад
Родитель
Сommit
5faef93364

+ 5 - 5
src/main/lombok/org/leumasjaffe/recipe/view/AutoGrowPanel.java

@@ -61,13 +61,14 @@ public class AutoGrowPanel<C extends Component & AutoGrowPanel.ChildComponent, T
 			add(comp);
 			add(comp);
 			comp.addGrowShrinkListener(this);
 			comp.addGrowShrinkListener(this);
 			comp.setListPosition(lastIndex());
 			comp.setListPosition(lastIndex());
+			revalidate();
 			callback.accept(true);
 			callback.accept(true);
 		}		
 		}		
 	}
 	}
 	
 	
 	@AllArgsConstructor
 	@AllArgsConstructor
 	private class ShrinkOnEmpty implements DocumentListener {
 	private class ShrinkOnEmpty implements DocumentListener {
-		ChildComponent component;
+		C component;
 		
 		
 		@Override public void insertUpdate(DocumentEvent e) {}
 		@Override public void insertUpdate(DocumentEvent e) {}
 		@Override public void changedUpdate(DocumentEvent e) {}
 		@Override public void changedUpdate(DocumentEvent e) {}
@@ -78,6 +79,7 @@ public class AutoGrowPanel<C extends Component & AutoGrowPanel.ChildComponent, T
 				return;
 				return;
 			}
 			}
 			
 			
+			component.setVisible(false);
 			component.removeGrowShrinkListener(this);
 			component.removeGrowShrinkListener(this);
 			remove(members.indexOf(component));
 			remove(members.indexOf(component));
 			callback.accept(false);
 			callback.accept(false);
@@ -86,7 +88,7 @@ public class AutoGrowPanel<C extends Component & AutoGrowPanel.ChildComponent, T
 	
 	
 	@Delegate(types={SetGap.class})
 	@Delegate(types={SetGap.class})
 	VerticalLayout layout = new VerticalLayout();
 	VerticalLayout layout = new VerticalLayout();
-	List<ChildComponent> members = new ArrayList<>();
+	List<C> members = new ArrayList<>();
 	GrowOnData grow;
 	GrowOnData grow;
 	
 	
 	@NonFinal List<T> models = null;
 	@NonFinal List<T> models = null;
@@ -154,7 +156,5 @@ public class AutoGrowPanel<C extends Component & AutoGrowPanel.ChildComponent, T
 	
 	
 	private int lastIndex() { return members.size() - 1; }
 	private int lastIndex() { return members.size() - 1; }
 	
 	
-	private ChildComponent last() {
-		return members.get(lastIndex());
-	}
+	private C last() { return members.get(lastIndex()); }
 }
 }

+ 0 - 5
src/main/lombok/org/leumasjaffe/recipe/view/RecipeCardPanel.java

@@ -3,7 +3,6 @@ package org.leumasjaffe.recipe.view;
 import javax.swing.JSplitPane;
 import javax.swing.JSplitPane;
 
 
 import org.leumasjaffe.observer.ForwardingObservableListener;
 import org.leumasjaffe.observer.ForwardingObservableListener;
-import org.leumasjaffe.observer.ObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Element;
 import org.leumasjaffe.recipe.model.Element;
 import org.leumasjaffe.recipe.model.RecipeCard;
 import org.leumasjaffe.recipe.model.RecipeCard;
@@ -20,7 +19,6 @@ import javax.swing.ScrollPaneConstants;
 @SuppressWarnings("serial")
 @SuppressWarnings("serial")
 @FieldDefaults(level=AccessLevel.PRIVATE)
 @FieldDefaults(level=AccessLevel.PRIVATE)
 public class RecipeCardPanel extends JSplitPane {
 public class RecipeCardPanel extends JSplitPane {
-	ObservableListener<RecipeCardPanel, RecipeCard> updateUI;
 	ForwardingObservableListener<RecipeCard> listener;
 	ForwardingObservableListener<RecipeCard> listener;
 	
 	
 	SummaryPanel summaryPanel;
 	SummaryPanel summaryPanel;
@@ -40,7 +38,6 @@ public class RecipeCardPanel extends JSplitPane {
 		setLeftComponent(summaryPanel);
 		setLeftComponent(summaryPanel);
 						
 						
 		listener = new ForwardingObservableListener<>();
 		listener = new ForwardingObservableListener<>();
-		updateUI = new ObservableListener<>(this, (c, t) -> validate());
 	}
 	}
 	
 	
 	public RecipeCardPanel(final RecipeCard card) {
 	public RecipeCardPanel(final RecipeCard card) {
@@ -58,14 +55,12 @@ public class RecipeCardPanel extends JSplitPane {
 		});
 		});
 
 
 		listener.setObserved(card, card.getElements());
 		listener.setObserved(card, card.getElements());
-		updateUI.setObserved(card);		
 	}
 	}
 	
 	
 	@Override
 	@Override
 	public void removeNotify() {
 	public void removeNotify() {
 		super.removeNotify();
 		super.removeNotify();
 		ObserverDispatch.unsubscribeAll(listener);
 		ObserverDispatch.unsubscribeAll(listener);
-		ObserverDispatch.unsubscribeAll(updateUI);
 	}
 	}
 
 
 }
 }

+ 4 - 0
src/main/lombok/org/leumasjaffe/recipe/view/RecipeManagerFrame.java

@@ -39,6 +39,10 @@ public class RecipeManagerFrame extends JFrame implements FileController.ViewMod
 	
 	
 	@Override
 	@Override
 	public void setModel(final RecipeCard card) {
 	public void setModel(final RecipeCard card) {
+		if (getContentPane() != null) {
+			getContentPane().setVisible(false);
+		}
 		setContentPane(new RecipeCardPanel(card));
 		setContentPane(new RecipeCardPanel(card));
+		validate();
 	}
 	}
 }
 }